Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Задача «Российская Инновация» или
        Levenstein distance
        Стас Фомин, stas@custis.ru
            Заказные Инфо...
Россия Вперед!TM — Великий ПланTM
Определение
Технологическая Карта Завода —
конвеер-последовательность из стандартных
ста...
Задача
OLD — старая технологическая карта
NEW — новая технологическая карта
 Разрешенные операции:
  D I — демонтаж станка...
Расстояние Левенштейна1


       Оно же редакторское расстояние
       Динамическое программирование
       за O(m · n) вр...
5 / 35
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 ( ...
«» → «» стоит 0


                 M     MI   MIR

A
AC
ACM
ACMI
ACMIP
ACMIPT




                                  7 / 35
«A» → «» стоит 2


                 M     MI   MIR

A          2D
AC
ACM
ACMI
ACMIP
ACMIPT
A ⇒ −→
   D 1




             ...
«AC» → «» стоит 4


                      M   MI   MIR

A                2D
AC               4D
ACM
ACMI
ACMIP
ACMIPT
AC ⇒...
«ACM» → «» стоит 6


                          M   MI   MIR

A             2D
AC            4D
ACM           6D
ACMI
ACMIP...
«ACMI» → «» стоит 8


                       M            MI   MIR

 A             2D
 AC            4D
 ACM           6D
...
«ACMIP» → «» стоит 10


                        M         MI      MIR

 A            2D
 AC           4D
 ACM          6D
...
«ACMIPT» → «» стоит 12


                          M         MI         MIR

 A            2D
 AC           4D
 ACM       ...
«» → «» стоит 0


                 M     MI   MIR

A         2D
AC        4D
ACM       6D
ACMI      8D
ACMIP     10D
ACMIP...
«» → «M» стоит 3


                 M     MI   MIR
                 3A
A          2D
AC         4D
ACM        6D
ACMI     ...
«» → «MI» стоит 6


                   M    MI   MIR
                   3A   6A
A            2D
AC           4D
ACM       ...
«» → «MIR» стоит 9


                         M    MI   MIR
                         3A   6A   9A
A              2D
AC    ...
«A» → «M» стоит 4


                   M     MI    MIR
                   3A    6A    9A
A            2D    4R
AC         ...
«AC» → «M» стоит 6


                     M     MI    MIR
                     3A    6A    9A
A              2D    4R
AC  ...
«ACM» → «M» стоит 4


                     M    MI     MIR
                     3A   6A     9A
 A             2D    4R
 AC...
«ACMI» → «M» стоит 6


                        M      MI   MIR
                        3A     6A   9A
 A            2D    ...
«ACMIP» → «M» стоит 8


                        M        MI       MIR
                        3A       6A       9A
 A     ...
«ACMIPT» → «M» стоит 10


                           M           MI         MIR
                           3A          6A ...
«A» → «MI» стоит 7


                     M     MI   MIR
                     3A    6A   9A
A              2D    4R    7A
...
«AC» → «MI» стоит 8


                       M     MI   MIR
                       3A    6A   9A
A              2D      4R...
«ACM» → «MI» стоит 7


                         M     MI   MIR
                         3A    6A   9A
A              2D   ...
«ACMI» → «MI» стоит 4


                        M     MI   MIR
                        3A    6A   9A
 A             2D    ...
«ACMIP» → «MI» стоит 6


                        M          MI   MIR
                        3A         6A   9A
 A        ...
«ACMIPT» → «MI» стоит 8


                           M           MI         MIR
                           3A          6A ...
«A» → «MIR» стоит 10


                         M     MI   MIR
                         3A    6A   9A
A               2D  ...
«AC» → «MIR» стоит 11


                        M      MI   MIR
                        3A     6A   9A
A               2D ...
«ACM» → «MIR» стоит 10


                        M         MI   MIR
                        3A        6A   9A
A           ...
«ACMI» → «MIR» стоит 7


                       M         MI   MIR
                       3A        6A   9A
 A            ...
«ACMIP» → «MIR» стоит 8


                        M           MI   MIR
                        3A          6A   9A
 A     ...
«ACMIPT» → «MIR» стоит 10


                           M             MI         MIR
                           3A         ...
Upcoming SlideShare
Loading in …5
×

Levenstein distance.beam

1,376 views

Published on

  • Be the first to comment

  • Be the first to like this

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

×