Хант – Шиманский алгоритмі - Hunt–Szymanski algorithm

Жылы Информатика, Хант – Шиманский алгоритмі,[1][2] ретінде белгілі Hunt – McIlroy алгоритмі, бұл шешім ең ұзақ таралатын проблема. Бұл қолданылған алғашқы эвристикалық емес алгоритмдердің бірі болды айырмашылық. Осы уақытқа дейін осы алгоритмнің вариациялары өсімшелі түрде табылды нұсқаларын басқару жүйелері, вики қозғалтқыштары, және молекулалық филогенетика бағдарламалық қамтамасыздандыру.

Бұл алгоритмнің ең нашар күрделілігі O(n2 журнал n), бірақ іс жүзінде O(n журнал n) күтілуде.[3][4]

Тарих

Алгоритмді Гарольд С.Стоун Томас Г.Шиманский шешкен ерекше істі қорыту ретінде ұсынған.[5][6][7] Джеймс В. Хант идеясын нақтылап, кандидаттар листингінің алгоритмінің бірінші нұсқасын іске асырды айырмашылық және оны ескі шеңберге енгізді Дуглас Макилрой.[5]

Алгоритмнің сипаттамасы 1976 жылы Хант пен Макилройдың техникалық есебі ретінде пайда болды.[5] Келесі жылы алгоритмнің нұсқасы Хант пен Шиманскийдің бірлескен мақаласында жарияланды.[5][8]

Алгоритм

Hunt-Szymanski алгоритмі - бұл күрделілігі бар ең ұзақ кездесетін есептің негізгі шешіміне өзгеріс енгізу. O(n2). Шешім алгоритм әдеттегі кірістермен жұмыс істеген кезде оның уақыты мен кеңістігі төмен болатындай етіп өзгертілген.

Негізгі ұзындыққа негізделген қарапайым шешім

Алгоритм

Келіңіздер Aмен болуы менбірінші файлдың жолы.

Келіңіздер Bj болуы jекінші файлдың жолы.

Келіңіздер Pиж біріншісіне ең ұзын жалпы тізбектің ұзындығы болуы керек мен бірінші файлдың жолдары және бірінші j екінші файлдың жолдары.

Мысал

Негізгі алгоритмнің ең ұзын алгоритмі рекурсивті қадамдарды көрсететін кесте.

Файлдарды қарастырыңыз A және B.

A үш жолдан тұрады:

B үш жолдан тұрады:

Жоғарыда көрсетілген алгоритм екі файл үшін де ең ұзын жалпы тізбектің ұзындығын анықтау үшін орындалатын қадамдар диаграммада көрсетілген. Алгоритм екі файлдың ең ұзын ортақ тізбегі екі жолдан тұрады деп дұрыс хабарлайды.

Күрделілік

Жоғарыда көрсетілген алгоритмде уақыт пен кеңістіктің ең нашар күрделілігі бар O(мн) (қараңыз үлкен O белгісі ), қайда м бұл файлдағы жолдар саны A және n бұл файлдағы жолдар саны B. Хант-Шиманский алгоритмі бұл алгоритмді уақыттың ең қиын күрделілігіне өзгертеді O(мн журнал м) және ғарыштық күрделілігі O(мн)дегенмен, ол әдеттегі кірістермен ең нашар жағдайды үнемі жеңеді.

Маңызды матчтар

к- кандидаттар

Hunt – Szymanski алгоритмі авторлар маңызды сәйкестік деп атайтын нәрсені ғана қарастырады к- кандидаттар. к-кандидаттар - индекстердің жұбы (мен, j) осылай:

Екінші тармақ екі қасиетін білдіреді к- үміткерлер:

  • Ұзындықтың жалпы тізбегі бар к біріншісінде мен файл жолдары A және бірінші j файл жолдары B.
  • Ұзындықтың жалпы тізбегі жоқ к кез келген аз мен файл жолдары A немесе j файл жолдары B.

Қосылу к- кандидаттар

Қалай пайдалану керектігін көрсететін сызба к-кандидаттар екі файлдың ең ұзын ортақ тізбегін табуға қажетті уақыт пен кеңістікті азайтады.

Жиынтығынан ең ұзын жалпы тізімді құру к- кандидаттар, әр осьте әр файлдың мазмұны бар тор жасалады. The к-кандидаттар торда белгіленеді. Жалпы секвенцияны тордың белгіленген координаталарын қосу арқылы жасауға болады, осылайша кез келген ұлғаю мен ұлғаюымен қатар жүредіj.

Бұл көршілес диаграммада көрсетілген.

Қара нүктелер қарапайым алгоритм бойынша қаралуы керек үміткерлерді білдіреді, ал қара сызықтар - ұзындығы 3-тің жалпы тізбегін жасайтын қосылыстар.

Қызыл нүктелер бейнелейді к-Хант-Шиманский алгоритмі бойынша қарастырылатын кандидаттар және қызыл сызық - бұл ұзындықтың 3-ке ортақ қосындысын құратын байланыс.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «LCS үшін аң аулау-Шимански алгоритмі» (PDF). Математика және информатика кафедрасы, Оңтүстік Дания университеті. 2017 жылғы 12 қаңтар.
  2. ^ Грабовски, Шимон (2016). «Жаңа кестелік және динамикалық бағдарламалаудың бірізділікке ұқсас мәселелерге негізделген техникасы». Дискретті қолданбалы математика. 212 (C): 96–103. ISSN  0166-218X.
  3. ^ Ахо, А .; Хиршберг, Д .; Ульман, Дж. (1976). «Жалпыға ортақ ең ұзақ ізденіс проблемасының күрделілігі» (PDF). ACM журналы. 23 (1): 1–12. ISSN  0004-5411.
  4. ^ 5.6 бөлімін қараңыз Aho, A. V., Хопкрофт, Дж. Э., Ульман, Дж. Д., Мәліметтер құрылымдары және алгоритмдер. Аддисон-Уэсли, 1983 ж. ISBN  0-201-00023-7
  5. ^ а б c г. Хант, Джеймс В .; МакИлрой, М.Дуглас (Маусым 1976). «Файлдарды дифференциалды салыстыру алгоритмі» (PDF). Есептеу ғылымының техникалық есебі. Bell Laboratories. 41.
  6. ^ Имре Саймон (1988 ж. 2 сәуір). «Бірізділікті салыстыру: кейбір теориялар мен тәжірибелер». Сан-Паулу Универсиадасы.
  7. ^ Шимански, Т.Г. (1975) Максимум ортақ туынды есептерінің ерекше жағдайы. Техникалық есеп TR-170, Принстон университеті, Информатика зертханасы.
  8. ^ Хант, Джеймс В; Шиманский, Томас Г. (1977). «Жалпы ұзындықты есептеудің жылдам алгоритмі» (PDF). ACM байланысы. 20 (5): 350–353. ISSN  0001-0782.