Levenstein distance.beam

1,269 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,269
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Levenstein distance.beam

  1. 1. Задача «Российская Инновация» или Levenstein distance Стас Фомин, stas@custis.ru Заказные ИнформСистемы 2 мая 2010 г. 1 / 35
  2. 2. Россия Вперед!TM — Великий ПланTM Определение Технологическая Карта Завода — конвеер-последовательность из стандартных станков и прочих машин. Cтанок кодируются однобуквенным кодом из диапазона {0-9, A-z, a-z}. Например «04ABFGSDDD8F67GODMNDOT895J4C7DHT84H». Технологическая карта может быть очень длинной (до 1000 знаков). Соответственно, АналитикиTM Великого ПланаTM исследуют возможности по оптимальной перестройке всех заводов, выполняя многофакторную оптимизацию. 2 / 35
  3. 3. Задача OLD — старая технологическая карта NEW — новая технологическая карта Разрешенные операции: D I — демонтаж станка с номером I R I S — замена станка с номером I на станок S. A I S — вставка станка S в позицию I. Т.е. замена «C» на «G» для «ABDCFFF23», выполняется командой «R 4 G», приводит к «ABDGFFF23». Т.е. вставка «E» перед «С» для «ABDCFFF23», выполняется командой «A 4 E», приводит к «ABDECFFF23». Найти план перестройки с минимальной стоимостью. 3 / 35
  4. 4. Расстояние Левенштейна1 Оно же редакторское расстояние Динамическое программирование за O(m · n) времени Можно уложиться в O(n) памяти (даже при нахождении плана преобразования). Алгоритм и Оптимальность: любой оптимальный план можно переписать, чтобы операции шли над концом строки. 1 Владимира Иосифовича 4 / 35
  5. 5. 5 / 35
  6. 6. for i in x r a n g e (m+1): D[ i , 0 ] = COST [ "D" ] ∗ i P[ i , 0 ] = "D" for j in x r a n g e ( n +1): D[ 0 , j ] = COST [ "A" ] ∗ j P[0 , j ] = "A" f o r j i n x r a n g e ( 1 , n +1): f o r i i n x r a n g e ( 1 , m+1): i f o l d s c h e m e [ i −1] == newscheme [ j − 1 ] : D[ i , j ] , P [ i , j ] = D[ i −1, j −1] , ’M’ else : D[ i , j ] , P [ i , j ] = min ( (D[ i −1, j ] + COST [ ’D ’ ] , ’D ’ ) , (D[ i , j −1] + COST [ ’A ’ ] , ’A ’ ) , (D[ i −1, j −1] + COST [ ’R ’ ] , ’R ’ ) ) 6 / 35
  7. 7. «» → «» стоит 0 M MI MIR A AC ACM ACMI ACMIP ACMIPT 7 / 35
  8. 8. «A» → «» стоит 2 M MI MIR A 2D AC ACM ACMI ACMIP ACMIPT A ⇒ −→ D 1 8 / 35
  9. 9. «AC» → «» стоит 4 M MI MIR A 2D AC 4D ACM ACMI ACMIP ACMIPT AC ⇒ −→ C ⇒ −→ D 1 D 1 9 / 35
  10. 10. «ACM» → «» стоит 6 M MI MIR A 2D AC 4D ACM 6D ACMI ACMIP ACMIPT ACM ⇒ −→ CM ⇒ −→ M ⇒ −→ D 1 D 1 D 1 10 / 35
  11. 11. «ACMI» → «» стоит 8 M MI MIR A 2D AC 4D ACM 6D ACMI 8D ACMIP ACMIPT ACMI ⇒ −→ CMI ⇒ −→ MI ⇒ −→ I ⇒ −→ D 1 D 1 D 1 D 1 11 / 35
  12. 12. «ACMIP» → «» стоит 10 M MI MIR A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT ACMIP ⇒ −→ CMIP ⇒ −→ MIP ⇒ −→ IP ⇒ −→ P ⇒ −→ D 1 D 1 D 1 D 1 D 1 12 / 35
  13. 13. «ACMIPT» → «» стоит 12 M MI MIR A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D ACMIPT ⇒ −→ CMIPT ⇒ −→ MIPT ⇒ −→ IPT ⇒ −→ PT ⇒ −→ T ⇒ −→ D 1 D 1 D 1 D 1 D 1 D 1 13 / 35
  14. 14. «» → «» стоит 0 M MI MIR A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D 14 / 35
  15. 15. «» → «M» стоит 3 M MI MIR 3A A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D ⇒ −→ M A 0 M 15 / 35
  16. 16. «» → «MI» стоит 6 M MI MIR 3A 6A A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D ⇒ −→ M ⇒ −→ MI A 0 M A 1 I 16 / 35
  17. 17. «» → «MIR» стоит 9 M MI MIR 3A 6A 9A A 2D AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D ⇒ −→ M ⇒ −→ MI ⇒ −→ MIR A 0 M A 1 I A 2 R 17 / 35
  18. 18. «A» → «M» стоит 4 M MI MIR 3A 6A 9A A 2D 4R AC 4D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D A ⇒ −→ M R 1 M 18 / 35
  19. 19. «AC» → «M» стоит 6 M MI MIR 3A 6A 9A A 2D 4R AC 4D 6D ACM 6D ACMI 8D ACMIP 10D ACMIPT 12D AC ⇒ −→ MC ⇒ −→ M R 1 M D 2 19 / 35
  20. 20. «ACM» → «M» стоит 4 M MI MIR 3A 6A 9A A 2D 4R AC 4D 6D ACM 6D 4M ACMI 8D ACMIP 10D ACMIPT 12D ACM ⇒ −→ CM ⇒ −→ M D 1 D 1 20 / 35
  21. 21. «ACMI» → «M» стоит 6 M MI MIR 3A 6A 9A A 2D 4R AC 4D 6D ACM 6D 4M ACMI 8D 6D ACMIP 10D ACMIPT 12D ACMI ⇒ −→ CMI ⇒ −→ MI ⇒ −→ M D 1 D 1 D 2 21 / 35
  22. 22. «ACMIP» → «M» стоит 8 M MI MIR 3A 6A 9A A 2D 4R AC 4D 6D ACM 6D 4M ACMI 8D 6D ACMIP 10D 8D ACMIPT 12D ACMIP ⇒ −→ CMIP ⇒ −→ MIP ⇒ −→ MP ⇒ −→ M D 1 D 1 D 2 D 2 22 / 35
  23. 23. «ACMIPT» → «M» стоит 10 M MI MIR 3A 6A 9A A 2D 4R AC 4D 6D ACM 6D 4M ACMI 8D 6D ACMIP 10D 8D ACMIPT 12D 10D ACMIPT ⇒ −→ CMIPT ⇒ −→ MIPT ⇒ −→ MPT ⇒ −→ MT ⇒ −→ M D 1 D 1 D 2 D 2 D 2 23 / 35
  24. 24. «A» → «MI» стоит 7 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D ACM 6D 4M ACMI 8D 6D ACMIP 10D 8D ACMIPT 12D 10D A ⇒ −→ M ⇒ −→ MI R 1 M A 1 I 24 / 35
  25. 25. «AC» → «MI» стоит 8 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D 8R ACM 6D 4M ACMI 8D 6D ACMIP 10D 8D ACMIPT 12D 10D AC ⇒ −→ MC ⇒ −→ MI R 1 M R 2 I 25 / 35
  26. 26. «ACM» → «MI» стоит 7 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D 8R ACM 6D 4M 7A ACMI 8D 6D ACMIP 10D 8D ACMIPT 12D 10D ACM ⇒ −→ CM ⇒ −→ M ⇒ −→ MI D 1 D 1 A 1 I 26 / 35
  27. 27. «ACMI» → «MI» стоит 4 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D 8R ACM 6D 4M 7A ACMI 8D 6D 4M ACMIP 10D 8D ACMIPT 12D 10D ACMI ⇒ −→ CMI ⇒ −→ MI D 1 D 1 27 / 35
  28. 28. «ACMIP» → «MI» стоит 6 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D 8R ACM 6D 4M 7A ACMI 8D 6D 4M ACMIP 10D 8D 6D ACMIPT 12D 10D ACMIP ⇒ −→ CMIP ⇒ −→ MIP ⇒ −→ MI D 1 D 1 D 3 28 / 35
  29. 29. «ACMIPT» → «MI» стоит 8 M MI MIR 3A 6A 9A A 2D 4R 7A AC 4D 6D 8R ACM 6D 4M 7A ACMI 8D 6D 4M ACMIP 10D 8D 6D ACMIPT 12D 10D 8D ACMIPT ⇒ −→ CMIPT ⇒ −→ MIPT ⇒ −→ MIT ⇒ −→ MI D 1 D 1 D 3 D 3 29 / 35
  30. 30. «A» → «MIR» стоит 10 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R ACM 6D 4M 7A ACMI 8D 6D 4M ACMIP 10D 8D 6D ACMIPT 12D 10D 8D A ⇒ −→ M ⇒ −→ MI ⇒ −→ MIR R 1 M A 1 I A 2 R 30 / 35
  31. 31. «AC» → «MIR» стоит 11 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R 11A ACM 6D 4M 7A ACMI 8D 6D 4M ACMIP 10D 8D 6D ACMIPT 12D 10D 8D AC ⇒ −→ MC ⇒ −→ MI ⇒ −→ MIR R 1 M R 2 I A 2 R 31 / 35
  32. 32. «ACM» → «MIR» стоит 10 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R 11A ACM 6D 4M 7A 10A ACMI 8D 6D 4M ACMIP 10D 8D 6D ACMIPT 12D 10D 8D ACM ⇒ −→ CM ⇒ −→ M ⇒ −→ MI ⇒ −→ MIR D 1 D 1 A 1 I A 2 R 32 / 35
  33. 33. «ACMI» → «MIR» стоит 7 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R 11A ACM 6D 4M 7A 10A ACMI 8D 6D 4M 7A ACMIP 10D 8D 6D ACMIPT 12D 10D 8D ACMI ⇒ −→ CMI ⇒ −→ MI ⇒ −→ MIR D 1 D 1 A 2 R 33 / 35
  34. 34. «ACMIP» → «MIR» стоит 8 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R 11A ACM 6D 4M 7A 10A ACMI 8D 6D 4M 7A ACMIP 10D 8D 6D 8R ACMIPT 12D 10D 8D ACMIP ⇒ −→ CMIP ⇒ −→ MIP ⇒ −→ MIR D 1 D 1 R 3 R 34 / 35
  35. 35. «ACMIPT» → «MIR» стоит 10 M MI MIR 3A 6A 9A A 2D 4R 7A 10A AC 4D 6D 8R 11A ACM 6D 4M 7A 10A ACMI 8D 6D 4M 7A ACMIP 10D 8D 6D 8R ACMIPT 12D 10D 8D 10D ACMIPT ⇒ −→ CMIPT ⇒ −→ MIPT ⇒ −→ MIRT ⇒ −→ MIR D 1 D 1 R 3 R D 4 35 / 35

×