{"id":268,"date":"2017-04-04T00:34:40","date_gmt":"2017-04-03T22:34:40","guid":{"rendered":"http:\/\/antek.atthost24.pl\/?p=268"},"modified":"2017-04-04T00:24:06","modified_gmt":"2017-04-03T22:24:06","slug":"wykrywanie-plagiatow-wybor-algorytmu","status":"publish","type":"post","link":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/","title":{"rendered":"Wykrywanie plagiat\u00f3w &#8211; wyb\u00f3r algorytmu"},"content":{"rendered":"<p>4W poprzednich wpisach zrobi\u0142em przegl\u0105d istniej\u0105cych algorytm\u00f3w\/system\u00f3w s\u0142u\u017c\u0105cych do wykrywania plagiat\u00f3w w kodach \u017ar\u00f3d\u0142owych. W tym wpisie przedstawi\u0119 og\u00f3lny zarys algorytmu, kt\u00f3ry wybra\u0142em.<\/p>\n<h3>PlagDetector &#8211; algorytm<\/h3>\n<p>G\u0142\u00f3wnym podej\u015bciem, wok\u00f3\u0142 kt\u00f3rego b\u0119dzie koncentrowa\u0142 si\u0119 m\u00f3j system zosta\u0142 opisany przeze mnie w <a href=\"http:\/\/antek.atthost24.pl\/index.php\/2017\/03\/23\/jak-wykrywac-plagiaty-czesc-trzecia\/\">tym wpisie<\/a>. Chodzi o wykrywanie plagiat\u00f3w przy u\u017cyciu aproksymacji z\u0142o\u017cono\u015bci Ko\u0142mogorowa.<\/p>\n<p>Aplikacja b\u0119dzie sk\u0142ada\u0142a si\u0119 z trzech g\u0142\u00f3wnych etap\u00f3w.<\/p>\n<h4>Tokenizacja<\/h4>\n<p>Pierwszym etapem algorytmu jest poddanie kodu \u017ar\u00f3d\u0142owego tokenizacji.<\/p>\n<p>Bardzo wa\u017cn\u0105 rzecz\u0105, jest dobranie odpowiedniego zestawu token\u00f3w. Ztokenizowany kod programu powinien dobrze oddawa\u0107 struktur\u0119 i logik\u0119 programu. Zbyt dok\u0142adne tokenizowanie mo\u017ce doprowadzi\u0107 do pomini\u0119cia wykrycia plagiatu z powodu sprawdzania i por\u00f3wnywania nieistotnych informacji. Z drugiej strony, niewystarczaj\u0105co dok\u0142adna tokenizacja mo\u017ce doprowadzi\u0107 to fa\u0142szywych wskaza\u0144. Zestaw token\u00f3w oraz sama tokenizacja jest przeprowadzona pod k\u0105tem danego j\u0119zyka programowa. Dzi\u0119ki temu uzyskany ci\u0105g token\u00f3w powinien dobrze odda\u0107 struktur\u0119 programu. W Listingu poni\u017cej znajduje si\u0119 fragment przyk\u0142adowego kodu i odpowiadaj\u0105cy mu przyk\u0142adowy ci\u0105g token\u00f3w.<\/p>\n<pre class=\"lang:default decode:true \">String var;           VARIABLE_DECLARATION\r\nint i;                VARIABLE_DECLARATION\r\ni = 3;                IDENTIFIER\r\n                      ASSIGN\r\n                      IDENTIFIER\r\nif (i &gt; 2) {          IF_SWITCH_STATEMENT_BEGIN\r\n                      OPEN_PARENTHESIS\r\n                      IDENTIFIER\r\n                      CONDITION\r\n                      IDENTIFIER\r\n                      CLOSE_PARENTHESIS\r\n var = \"more than 2\"; IDENTIFIER\r\n                      ASSIGN\r\n                      STRING\r\n}                     IF_SWITCH_STATEMENT_END\r\nelse {                IF_SWITCH_STATEMENT_BEGIN\r\n var = \"less than 2\"; IDENTIFIER\r\n                      ASSIGN\r\n                      STRING\r\n}                     IF_SWITCH_STATEMENT_END<\/pre>\n<h3>Kompresja token\u00f3w<\/h3>\n<p>G\u0142\u00f3wn\u0105 rzecz\u0105 przy wyborze algorytmu kompresji by\u0142a konieczno\u015b\u0107 wyboru takiego algorytmu, kt\u00f3ry b\u0119dzie bezstratny, lecz jego stopie\u0144 kompresji b\u0119dzie mo\u017cliwie du\u017cy. Na podstawie test\u00f3w i do\u015bwiadcze\u0144 autor\u00f3w systemu SID (opisanego w poprzednim wpisie) wyb\u00f3r pad\u0142 na algorytm LZ77.<\/p>\n<p>Najwa\u017cniejsz\u0105 modyfikacj\u0105, kt\u00f3r\u0105 wprowadz\u0119 do implementowanego\u00a0algorytmu kompresji w stosunku do oryginalnego algorytmu LZ77 jest nieograniczony bufor s\u0142ownika oraz nieograniczony bufor wej\u015bciowy. Dzi\u0119ki takiemu podej\u015bciu stopie\u0144 kompresji danych b\u0119dzie wi\u0119kszy ni\u017c w przypadku, gdy bufory s\u0142ownika i wej\u015bciowy s\u0105 ograniczone. Podej\u015bcie to w oczywisty spos\u00f3b powoduje wyd\u0142u\u017cenie dzia\u0142ania algorytmu, lecz taki zabieg jest konieczny, aby uzyska\u0107 jak najbardziej dok\u0142adnie wyniki. Poni\u017cej przedstawi\u0142em pseudokod zmodyfikowanego algorytmu kodowania LZ77.<\/p>\n<pre class=\"toolbar:2 lang:default decode:true \">Require: Input\r\nwhile(Input nie jest pusty) do\r\n  znajdz najdluzszy prefiks z Input znajdujacy sie w slowniku\r\n  if (znaleziono dopasowanie) then\r\n    dodaj do slownika trojke (left_shift, length, mismatch_token)\r\n      \/\/ gdzie:\r\n      \/\/ left_shift - przesuniece w lewo\r\n      \/\/ length - dlugosc dopasowanego ciagu\r\n      \/\/ mismatch_token - pierwszy niepasujacy token\r\n    przesun wskaznik o length + 1\r\n  else\r\n    dodaj do slownika trojke (0, 0, mismatch_token)\r\n      \/\/ gdzie:\r\n      \/\/ mismatch_token - pierwszy token na wejsciu\r\n    przesun wskaznik o 1\r\n  end if\r\nend while\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Wielko\u015bci\u0105 skompresowanego ci\u0105gu jest ilo\u015b\u0107 wpis\u00f3w w s\u0142owniku pomno\u017cona przez (shift_size + length_size + token_size), gdzie:<\/p>\n<ul>\n<li>shift_size &#8211; wielko\u015b\u0107 w bajtach potrzebna do zakodowania przesuni\u0119cia w lewo;<\/li>\n<li>length_size &#8211; wielko\u015b\u0107 w bajtach potrzebna do zakodowania d\u0142ugo\u015bci;<\/li>\n<li>token_size &#8211; wielko\u015b\u0107 w bajtach potrzebna do zakodowania jednego tokena.<\/li>\n<\/ul>\n<h4>Aproksymacja z\u0142o\u017cono\u015bci Ko\u0142mogorowa<\/h4>\n<p>Warto\u015b\u0107 aproksymacji Ko\u0142mogorowa jest przybli\u017cana przy pomocy wzoru:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-ea8396f97012e5a5115fdb37ab560a6e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#100;&#40;&#120;&#44;&#121;&#41;&#32;&#61;&#32;&#49;&#32;&#45;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#75;&#40;&#120;&#41;&#45;&#75;&#40;&#120;&#124;&#121;&#41;&#125;&#123;&#75;&#40;&#120;&#121;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"29\" width=\"190\" style=\"vertical-align: -9px;\"\/>.<\/p>\n<p>Przez <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-eee8f2c3530ade96516f64764f7b1ff8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#75;&#40;&#120;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"35\" style=\"vertical-align: -5px;\"\/> w przypadku konstruowanego algorytmu b\u0119dzie rozumiana wielko\u015b\u0107 (w\u00a0bajtach) skompresowanego programu i b\u0119dzie oznaczana jako <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-2a1233706e52e15ac58f77dca1e52975_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"65\" style=\"vertical-align: -5px;\"\/>. W zwi\u0105zku z tym wz\u00f3r na przybli\u017cenie aproksymacji Ko\u0142mogorowa przyjmie posta\u0107:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-285a3f55b6834606d0d22ee358d524e7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#100;&#40;&#120;&#44;&#121;&#41;&#32;&#61;&#32;&#49;&#32;&#45;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#41;&#45;&#67;&#111;&#109;&#112;&#40;&#120;&#124;&#121;&#41;&#125;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#121;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"29\" width=\"238\" style=\"vertical-align: -9px;\"\/>.<\/p>\n<p>Warto\u015b\u0107 <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-d5696fd434e6caa6d436ca78f9a7320f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#124;&#121;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"92\" style=\"vertical-align: -5px;\"\/> zostanie przybli\u017cona w nast\u0119puj\u0105cy spos\u00f3b:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-6c4da4a139a9f8a5092eedf5dbde4f6b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#124;&#121;&#41;&#32;&#61;&#32;&#67;&#111;&#109;&#112;&#40;&#120;&#121;&#41;&#32;&#45;&#32;&#67;&#111;&#109;&#112;&#40;&#121;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"280\" style=\"vertical-align: -4px;\"\/>.<\/p>\n<p>Zatem ostatecznie warto\u015b\u0107 aproksymacji Ko\u0142mogorowa zostanie obliczone ze wzoru:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-832380d3767b6aab92b1b690346a491f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#100;&#40;&#120;&#44;&#121;&#41;&#32;&#61;&#32;&#49;&#32;&#45;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#41;&#43;&#67;&#111;&#109;&#112;&#40;&#121;&#41;&#45;&#67;&#111;&#109;&#112;&#40;&#120;&#124;&#121;&#41;&#125;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#121;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"29\" width=\"303\" style=\"vertical-align: -9px;\"\/>.<\/p>\n<p>Tak obliczona warto\u015b\u0107 aproksymacji z\u0142o\u017cono\u015bci Ko\u0142mogorowa jest przeliczana na wsp\u00f3\u0142czynnik R wed\u0142ug wzoru:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-288f1d480af2475afffb706eb6549709_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#82;&#32;&#61;&#32;&#49;&#32;&#45;&#32;&#100;&#40;&#120;&#44;&#121;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"117\" style=\"vertical-align: -4px;\"\/>.<\/p>\n<p>Wska\u017anik ten s\u0142u\u017cy za wska\u017anik prawdopodobie\u0144stwa zaj\u015bcia plagiatu. Im warto\u015b\u0107 <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-6a509bd4c5dc5f5cbf91e6fd1a4744ea_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#82;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"12\" style=\"vertical-align: 0px;\"\/> jest wi\u0119ksza, tym prawdopodobie\u0144stwo plagiatu jest wi\u0119ksze.<\/p>\n<p>Dodatkowo dla ka\u017cdej pary program\u00f3w obliczane s\u0105 warto\u015bci <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-b47586cf94008e9ad29b3ecb9769ea89_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#112;&#120;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"19\" style=\"vertical-align: -4px;\"\/> oraz <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-898aac42ebc43aa1f07d8ebf808b8eb0_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#112;&#121;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"19\" style=\"vertical-align: -4px;\"\/>. Warto\u015bci te przedstawiaj\u0105 procentow\u0105 zawarto\u015b\u0107 informacji z jednego ci\u0105gu zawartych w drugim. Warto\u015bci te obliczane s\u0105 w spos\u00f3b nast\u0119puj\u0105cy:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-61e6610eba22b3ea80d1e1c625daef69_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#112;&#120;&#61;&#92;&#102;&#114;&#97;&#99;&#123;&#82;&#40;&#92;&#97;&#108;&#112;&#104;&#97;&#32;&#43;&#32;&#49;&#41;&#125;&#123;&#82;&#43;&#49;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"28\" width=\"94\" style=\"vertical-align: -8px;\"\/>,<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-cf74a6651c6568ea059ef9590e4dab6a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#112;&#121;&#61;&#92;&#102;&#114;&#97;&#99;&#123;&#82;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#97;&#108;&#112;&#104;&#97;&#125;&#32;&#43;&#32;&#49;&#41;&#125;&#123;&#82;&#43;&#49;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"30\" width=\"96\" style=\"vertical-align: -8px;\"\/>, gdzie:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-03b711dd9fc4e1dd793f1f18c0e268b1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#97;&#108;&#112;&#104;&#97;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#67;&#111;&#109;&#112;&#40;&#121;&#41;&#125;&#123;&#67;&#111;&#109;&#112;&#40;&#120;&#41;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"29\" width=\"92\" style=\"vertical-align: -9px;\"\/>.<\/p>\n<p>Wska\u017aniki <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-b47586cf94008e9ad29b3ecb9769ea89_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#112;&#120;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"19\" style=\"vertical-align: -4px;\"\/> i <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.lantkowiak.pl\/wp-content\/ql-cache\/quicklatex.com-898aac42ebc43aa1f07d8ebf808b8eb0_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#101;&#109;&#112;&#104;&#123;&#112;&#121;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"19\" style=\"vertical-align: -4px;\"\/> s\u0142u\u017c\u0105 jako dodatkowa informacja, wskazuj\u0105ca na zawarto\u015b\u0107 jednego ci\u0105gu w drugim. Warto\u015bci te mog\u0105 wykaza\u0107 zaj\u015bcie plagiatu, w przypadku gdy jeden z program\u00f3w zawiera w sobie kod drugiego, lecz sam program jest o wiele bardziej rozbudowany i warto\u015b\u0107 wsp\u00f3\u0142czynnika R mo\u017ce nie wskaza\u0107 zaj\u015bcia plagiatu.<\/p>\n<h3>Podsumowanie<\/h3>\n<p>W tym wpisie om\u00f3wi\u0142em algorytm, kt\u00f3ry planuj\u0119 zaimplementowa\u0107. Sk\u0142ada si\u0119 \u00a0on z 3 g\u0142\u00f3wnych krok\u00f3w &#8211; tokenizacji, kompresji i aproksymacji z\u0142o\u017cono\u015bci Ko\u0142mogorowa. W kolejnych wpisach postaram si\u0119 bardziej przybli\u017cy\u0107 ka\u017cdy z tych etap\u00f3w.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>4W poprzednich wpisach zrobi\u0142em przegl\u0105d istniej\u0105cych algorytm\u00f3w\/system\u00f3w s\u0142u\u017c\u0105cych do wykrywania plagiat\u00f3w w kodach \u017ar\u00f3d\u0142owych. W tym wpisie przedstawi\u0119 og\u00f3lny zarys algorytmu, kt\u00f3ry wybra\u0142em. PlagDetector &#8211; algorytm G\u0142\u00f3wnym podej\u015bciem,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,19],"tags":[],"class_list":["post-268","post","type-post","status-publish","format-standard","hentry","category-dsp2017","category-plagdetector"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog\" \/>\n<meta property=\"og:description\" content=\"4W poprzednich wpisach zrobi\u0142em przegl\u0105d istniej\u0105cych algorytm\u00f3w\/system\u00f3w s\u0142u\u017c\u0105cych do wykrywania plagiat\u00f3w w kodach \u017ar\u00f3d\u0142owych. W tym wpisie przedstawi\u0119 og\u00f3lny zarys algorytmu, kt\u00f3ry wybra\u0142em. PlagDetector &#8211; algorytm G\u0142\u00f3wnym podej\u015bciem,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukasz Antkowiak&#039;s blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-03T22:34:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-03T22:24:06+00:00\" \/>\n<meta name=\"author\" content=\"\u0141ukasz Antkowiak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0141ukasz Antkowiak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/\",\"url\":\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/\",\"name\":\"Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.lantkowiak.pl\/#website\"},\"datePublished\":\"2017-04-03T22:34:40+00:00\",\"dateModified\":\"2017-04-03T22:24:06+00:00\",\"author\":{\"@id\":\"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/009bfc4db220c225786c59b1748ba1e6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/blog.lantkowiak.pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wykrywanie plagiat\u00f3w &#8211; wyb\u00f3r algorytmu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.lantkowiak.pl\/#website\",\"url\":\"https:\/\/blog.lantkowiak.pl\/\",\"name\":\"Lukasz Antkowiak&#039;s blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.lantkowiak.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/009bfc4db220c225786c59b1748ba1e6\",\"name\":\"\u0141ukasz Antkowiak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e18e2bfe319da9b5757cf7f7ae1bfecf?s=96&d=monsterid&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e18e2bfe319da9b5757cf7f7ae1bfecf?s=96&d=monsterid&r=g\",\"caption\":\"\u0141ukasz Antkowiak\"},\"description\":\"dd\",\"url\":\"https:\/\/blog.lantkowiak.pl\/index.php\/author\/antek\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/","og_locale":"pl_PL","og_type":"article","og_title":"Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog","og_description":"4W poprzednich wpisach zrobi\u0142em przegl\u0105d istniej\u0105cych algorytm\u00f3w\/system\u00f3w s\u0142u\u017c\u0105cych do wykrywania plagiat\u00f3w w kodach \u017ar\u00f3d\u0142owych. W tym wpisie przedstawi\u0119 og\u00f3lny zarys algorytmu, kt\u00f3ry wybra\u0142em. PlagDetector &#8211; algorytm G\u0142\u00f3wnym podej\u015bciem,...","og_url":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/","og_site_name":"Lukasz Antkowiak&#039;s blog","article_published_time":"2017-04-03T22:34:40+00:00","article_modified_time":"2017-04-03T22:24:06+00:00","author":"\u0141ukasz Antkowiak","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"\u0141ukasz Antkowiak","Szacowany czas czytania":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/","url":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/","name":"Wykrywanie plagiat\u00f3w - wyb\u00f3r algorytmu - Lukasz Antkowiak&#039;s blog","isPartOf":{"@id":"https:\/\/blog.lantkowiak.pl\/#website"},"datePublished":"2017-04-03T22:34:40+00:00","dateModified":"2017-04-03T22:24:06+00:00","author":{"@id":"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/009bfc4db220c225786c59b1748ba1e6"},"breadcrumb":{"@id":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.lantkowiak.pl\/index.php\/2017\/04\/04\/wykrywanie-plagiatow-wybor-algorytmu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/blog.lantkowiak.pl\/"},{"@type":"ListItem","position":2,"name":"Wykrywanie plagiat\u00f3w &#8211; wyb\u00f3r algorytmu"}]},{"@type":"WebSite","@id":"https:\/\/blog.lantkowiak.pl\/#website","url":"https:\/\/blog.lantkowiak.pl\/","name":"Lukasz Antkowiak&#039;s blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.lantkowiak.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/009bfc4db220c225786c59b1748ba1e6","name":"\u0141ukasz Antkowiak","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/blog.lantkowiak.pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e18e2bfe319da9b5757cf7f7ae1bfecf?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e18e2bfe319da9b5757cf7f7ae1bfecf?s=96&d=monsterid&r=g","caption":"\u0141ukasz Antkowiak"},"description":"dd","url":"https:\/\/blog.lantkowiak.pl\/index.php\/author\/antek\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":20,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"predecessor-version":[{"id":288,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/posts\/268\/revisions\/288"}],"wp:attachment":[{"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.lantkowiak.pl\/index.php\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}