Download - Levenstein distance.beam
![Page 1: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/1.jpg)
Задача «Российская Инновация» илиLevenstein distance
Стас Фомин, [email protected]
Заказные ИнформСистемы
2 мая 2010 г.
1 / 35
![Page 2: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/2.jpg)
Россия Вперед!TM — Великий ПланTM
ОпределениеТехнологическая Карта Завода —конвеер-последовательность из стандартныхстанков и прочих машин.Cтанок кодируются однобуквенным кодом издиапазона{0-9, A-z, a-z}.Например «04ABFGSDDD8F67GODMNDOT895J4C7DHT84H».Технологическая карта может быть очень длинной (до 1000 знаков).Соответственно, АналитикиTM Великого ПланаTM исследуютвозможности по оптимальной перестройке всех заводов, выполняямногофакторную оптимизацию.
2 / 35
![Page 3: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/3.jpg)
Задача
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
![Page 4: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/4.jpg)
Расстояние Левенштейна1
Оно же редакторское расстояниеДинамическое программированиеза O(m · n) времениМожно уложиться в O(n) памяти (даже при нахожденииплана преобразования).
Алгоритм и Оптимальность: любой оптимальный план можнопереписать, чтобы операции шли над концом строки.
1Владимира Иосифовича
4 / 35
![Page 5: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/5.jpg)
5 / 35
![Page 6: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/6.jpg)
for i in x range (m+1):D[ i , 0 ] = COST[ "D" ]∗ iP [ i , 0 ] = "D"
for j in x range ( n+1):D[ 0 , j ] = COST[ "A" ]∗ jP [ 0 , j ] = "A"
for j in x range (1 , n+1):for i in x range (1 , m+1):
i f o ldscheme [ i −1] == newscheme [ j −1] :D[ i , j ] , P [ i , j ] = D[ i −1, j −1] , ’M’
e l se :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
![Page 7: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/7.jpg)
«» → «» стоит 0
M MI MIR
AACACMACMIACMIPACMIPT
7 / 35
![Page 8: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/8.jpg)
«A» → «» стоит 2
M MI MIR
A 2D
ACACMACMIACMIPACMIPT
A ⇒ −→D 1
8 / 35
![Page 9: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/9.jpg)
«AC» → «» стоит 4
M MI MIR
A 2D
AC 4D
ACMACMIACMIPACMIPT
AC ⇒ −→D 1
C ⇒ −→D 1
9 / 35
![Page 10: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/10.jpg)
«ACM» → «» стоит 6
M MI MIR
A 2D
AC 4D
ACM 6D
ACMIACMIPACMIPT
ACM ⇒ −→D 1
CM ⇒ −→D 1
M ⇒ −→D 1
10 / 35
![Page 11: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/11.jpg)
«ACMI» → «» стоит 8
M MI MIR
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIPACMIPT
ACMI ⇒ −→D 1
CMI ⇒ −→D 1
MI ⇒ −→D 1
I ⇒ −→D 1
11 / 35
![Page 12: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/12.jpg)
«ACMIP» → «» стоит 10
M MI MIR
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT
ACMIP ⇒ −→D 1
CMIP ⇒ −→D 1
MIP ⇒ −→D 1
IP ⇒ −→D 1
P ⇒ −→D 1
12 / 35
![Page 13: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/13.jpg)
«ACMIPT» → «» стоит 12
M MI MIR
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
ACMIPT ⇒ −→D 1
CMIPT ⇒ −→D 1
MIPT ⇒ −→D 1
IPT ⇒ −→D 1
PT ⇒ −→D 1
T ⇒ −→D 1
13 / 35
![Page 14: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/14.jpg)
«» → «» стоит 0
M MI MIR
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
14 / 35
![Page 15: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/15.jpg)
«» → «M» стоит 3
M MI MIR3A
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
⇒ −→A 0 M
M
15 / 35
![Page 16: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/16.jpg)
«» → «MI» стоит 6
M MI MIR3A 6A
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
⇒ −→A 0 M
M ⇒ −→A 1 I
MI
16 / 35
![Page 17: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/17.jpg)
«» → «MIR» стоит 9
M MI MIR3A 6A 9A
A 2D
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
⇒ −→A 0 M
M ⇒ −→A 1 I
MI ⇒ −→A 2 R
MIR
17 / 35
![Page 18: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/18.jpg)
«A» → «M» стоит 4
M MI MIR3A 6A 9A
A 2D 4R
AC 4D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
A ⇒ −→R 1 M
M
18 / 35
![Page 19: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/19.jpg)
«AC» → «M» стоит 6
M MI MIR3A 6A 9A
A 2D 4R
AC 4D 6D
ACM 6D
ACMI 8D
ACMIP 10D
ACMIPT 12D
AC ⇒ −→R 1 M
MC ⇒ −→D 2
M
19 / 35
![Page 20: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/20.jpg)
«ACM» → «M» стоит 4
M MI MIR3A 6A 9A
A 2D 4R
AC 4D 6D
ACM 6D 4M
ACMI 8D
ACMIP 10D
ACMIPT 12D
ACM ⇒ −→D 1
CM ⇒ −→D 1
M
20 / 35
![Page 21: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/21.jpg)
«ACMI» → «M» стоит 6
M MI MIR3A 6A 9A
A 2D 4R
AC 4D 6D
ACM 6D 4M
ACMI 8D 6D
ACMIP 10D
ACMIPT 12D
ACMI ⇒ −→D 1
CMI ⇒ −→D 1
MI ⇒ −→D 2
M
21 / 35
![Page 22: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/22.jpg)
«ACMIP» → «M» стоит 8
M MI MIR3A 6A 9A
A 2D 4R
AC 4D 6D
ACM 6D 4M
ACMI 8D 6D
ACMIP 10D 8D
ACMIPT 12D
ACMIP ⇒ −→D 1
CMIP ⇒ −→D 1
MIP ⇒ −→D 2
MP ⇒ −→D 2
M
22 / 35
![Page 23: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/23.jpg)
«ACMIPT» → «M» стоит 10
M MI MIR3A 6A 9A
A 2D 4R
AC 4D 6D
ACM 6D 4M
ACMI 8D 6D
ACMIP 10D 8D
ACMIPT 12D 10D
ACMIPT ⇒ −→D 1
CMIPT ⇒ −→D 1
MIPT ⇒ −→D 2
MPT ⇒ −→D 2
MT ⇒ −→D 2
M
23 / 35
![Page 24: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/24.jpg)
«A» → «MI» стоит 7
M MI MIR3A 6A 9A
A 2D 4R 7A
AC 4D 6D
ACM 6D 4M
ACMI 8D 6D
ACMIP 10D 8D
ACMIPT 12D 10D
A ⇒ −→R 1 M
M ⇒ −→A 1 I
MI
24 / 35
![Page 25: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/25.jpg)
«AC» → «MI» стоит 8
M MI MIR3A 6A 9A
A 2D 4R 7A
AC 4D 6D 8R
ACM 6D 4M
ACMI 8D 6D
ACMIP 10D 8D
ACMIPT 12D 10D
AC ⇒ −→R 1 M
MC ⇒ −→R 2 I
MI
25 / 35
![Page 26: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/26.jpg)
«ACM» → «MI» стоит 7
M MI MIR3A 6A 9A
A 2D 4R 7A
AC 4D 6D 8R
ACM 6D 4M 7A
ACMI 8D 6D
ACMIP 10D 8D
ACMIPT 12D 10D
ACM ⇒ −→D 1
CM ⇒ −→D 1
M ⇒ −→A 1 I
MI
26 / 35
![Page 27: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/27.jpg)
«ACMI» → «MI» стоит 4
M MI MIR3A 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 ⇒ −→D 1
CMI ⇒ −→D 1
MI
27 / 35
![Page 28: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/28.jpg)
«ACMIP» → «MI» стоит 6
M MI MIR3A 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 ⇒ −→D 1
CMIP ⇒ −→D 1
MIP ⇒ −→D 3
MI
28 / 35
![Page 29: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/29.jpg)
«ACMIPT» → «MI» стоит 8
M MI MIR3A 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 ⇒ −→D 1
CMIPT ⇒ −→D 1
MIPT ⇒ −→D 3
MIT ⇒ −→D 3
MI
29 / 35
![Page 30: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/30.jpg)
«A» → «MIR» стоит 10
M MI MIR3A 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 ⇒ −→R 1 M
M ⇒ −→A 1 I
MI ⇒ −→A 2 R
MIR
30 / 35
![Page 31: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/31.jpg)
«AC» → «MIR» стоит 11
M MI MIR3A 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 ⇒ −→R 1 M
MC ⇒ −→R 2 I
MI ⇒ −→A 2 R
MIR
31 / 35
![Page 32: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/32.jpg)
«ACM» → «MIR» стоит 10
M MI MIR3A 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 ⇒ −→D 1
CM ⇒ −→D 1
M ⇒ −→A 1 I
MI ⇒ −→A 2 R
MIR
32 / 35
![Page 33: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/33.jpg)
«ACMI» → «MIR» стоит 7
M MI MIR3A 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 ⇒ −→D 1
CMI ⇒ −→D 1
MI ⇒ −→A 2 R
MIR
33 / 35
![Page 34: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/34.jpg)
«ACMIP» → «MIR» стоит 8
M MI MIR3A 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 ⇒ −→D 1
CMIP ⇒ −→D 1
MIP ⇒ −→R 3 R
MIR
34 / 35
![Page 35: Levenstein distance.beam](https://reader034.vdocuments.mx/reader034/viewer/2022042602/557fd3a7d8b42ad1048b502a/html5/thumbnails/35.jpg)
«ACMIPT» → «MIR» стоит 10
M MI MIR3A 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 ⇒ −→D 1
CMIPT ⇒ −→D 1
MIPT ⇒ −→R 3 R
MIRT ⇒ −→D 4
MIR
35 / 35