![](/user_photo/1144_wzNgE.jpg)
Полезная методичка
.pdf2.Второй л оритм осно н н т хник "р ляй и л ст уй". Д лим м сси н ч сти ( л нсиро к ). Н хо им м кси- м льный и миним льный эл м нты ля к ой и ч ст й;ы ир м и м ксим льных эл м нто н и ольший и и миним льных эл м нто н им ньший. Р курр нтно ур н нинно о л оритм им т сл ующий и :
T (n) = 2T (n=2) + 2; n > 2
T (2) = 1:
Построим точно р ш ни нно о ур н ния, исполь уя м -
òî ïî ñò íî êè.
g(n) = 32 n 2
3 |
3 n |
2 + 2 = |
3 |
2n 2 2 |
2 2 |
2 n 2: |
Т ким о р ом, сло ность л оритм сть
T (n) = 32 n 2:
З м тим, что ссимптотич ски сло ности п р ом и торомл оритм х со п ют и р ны O(n) , но прим н ни т хники отором л оритм т лучшую конст нту.
Т хник "р ляй и л ст уй"я ля тся эфф кти ной, ко -чу мо но р ить н по чи р умно р мя, сумм рный р м р ч н лик. О н ко, ко это н у тся (прим н ни т хники при о ит к экспон нци льным л оритм м), то прим ня-тся принцип " ин мич ско о про р ммиро ния".
3.2.ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Ñóòü ííî î ì òî êëþ÷ òñÿ ñë óþù ì.
1.З ч по ру тся с м йст о ч той приро ы. Дру-ими сло ми, р и тся н исимы (мо ут п р с к ться) по чи.
2.К я по ч р ш тся от льно о ин р . Оптим льнын ч ния р ш ний с х по ч помин ются.
41
3.Для исхо ной чи строится о р тно соотнош ни , с я-ы ющ м у со ой оптим льны н ч ния исимых по ч.
Т ким о р ом осно ны отличия нной т хники от т хники "р ляй и л ст уй" ключ ются сл ующ м:
ð ëÿé è ë ñò óé |
ин мич ско про р ммиро ни |
|
|
н исимы по чи |
исимы по чи |
|
|
ð ø íèÿ ñ õ ïî ÷ |
ð ø íèÿ ñ õ ïî ÷ |
н помин ются |
помин ются |
|
|
Д нн я т хник н хо ит с о прим н ни , ко с по чи по- м щ ются п мять. Вычисл ни и т от м лых по ч к ольшим и от ты помин ются т лиц , поэтому нный м то ино-
н ы ют т личным . О н и кл ток т лицы и т опти- м льно р ш ни исхо ной чи.
Ïðèì ð 1.
З ны строки сим оло A = fa1; a2; ; amg è B = = fb1; b2; ; bng . Í î õî èìî îïð ëèòü d(A; B) миним льно число ст ок, у л ний и м н сим ол , тр у мо ля пр о р -о ния о ной строки ру ую.
Р ссмотрим с о мо ны по чи нной чи AiBj , êî-
торы ключ ются пр о р о нии строки fa1; a2; ; aig строку fb1; b2; ; bjg и пусть d[i; j] миним льно колич ст о оп р ций ля ыполн ния это о пр о р о ния.
Âò ëèö , ïðè ííîé íè , óê íû ñ ïî ÷è ïðè m =
=3; n = 4 .
|
j = 0 |
j = 1 |
j = 2 |
j = 3 |
j = 4 |
|
|
|
|
|
|
i = 0 |
|
b1 |
b1b2 |
b1b2b3 |
b1b2 b3b4 |
i = 1 |
a1 |
a1b1 |
a1b1b2 |
a1b1b2b3 |
a1b1 b2b3b4 |
i = 2 |
a1a2 |
a1a2b1 |
a1a2b1b2 |
a1a2b1b2b3 |
a1a2b1 b2b3b4 |
i = 3 |
a1a2a3 |
a1a2a3b1 |
a1a2a3b1b2 |
a1a2a3b1b2b3 |
a1a2a3b1b2b3b4 |
Построим м трицу D = d[i; j] ð ì ð (m + 1) (n + 1); i =
= 0; ; n; j = 0; ; m .
Î÷ è íî, ÷òî d[0; j] = j; j = 0; ; n только ст ки и коли- ч ст о ст ок р но лин ц почки Bj , d[i; 0] = i; i = 0; m только у л ния и колич ст о у л ний р но лин ц почки Ai .
42
Р ссмотрим см ны чи:
a1; a2; ai 1b1; b2; bj 1 |
a1; a2; ai 1b1; b2; bj |
a1; a2; aib1; b2; bj 1 |
a1; a2; ai b1; b2; bj |
Пр поло им, что оптим льны р ш ния ч
Ai 1Bj ; Ai 1Bj 1; AiBj 1
у постро ны. Пок м, к к с я ны р ш ния этих ч с р ш - ни м чи AiBj .
Åñëè ó ëèòü ÷ AiBj ýë ì íò ai , то прихо им к -ч Ai 1 Bj ( d[i 1; j] + 1 ).
Ð øèì ÷ó AiBj 1 , ïîñë ÷ î î èì ýë ì íò bj . Получ м р ш ни чи AiBj ( d[i; j 1] + 1 ).
Ð øèì ÷ó Ai 1Bj 1 , ïîñë ÷ î î í îï ð öèÿ ì íû ýë ì íò ai í bj , котор я н о хо им лишь случ , ко-
ýòè ýë ì íòû í ñî ï þò , ïðè î èò ê ð ø íèþ ÷è
AiBj ( d[i 1; j 1] + Æ(ai; bj); Æ(ai; bj) = 0 , ñëè ai = bj
è Æ(ai; bj) = 1 ñëè ai 6= bj ).
Т ким о р ом, получ м сл ующ о р тно соотнош ни : d[i; j] = min (d[i 1; j] + 1; d[i; j 1] + 1; d[i 1; j 1] + Æ(ai; bj)) :
Ïðèì ð. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A : |
p t s l d d f |
|
|
|||||
|
|
|
B : |
|
t s g l d d s |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
2 |
|
3 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
2 |
|
3 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
2 |
|
3 |
4 |
5 |
6 |
7 |
|
2 |
2 |
1 |
|
2 |
|
3 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
3 |
2 |
|
1 |
|
2 |
3 |
4 |
5 |
6 |
|
4 |
4 |
3 |
|
2 |
|
2 |
2 |
3 |
4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
5 |
4 |
|
3 |
|
3 |
3 |
2 |
3 |
4 |
|
6 |
6 |
5 |
|
4 |
|
4 |
4 |
3 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
7 |
6 |
|
5 |
|
5 |
5 |
4 |
3 |
3 |
|
|
|
|
|
|
43 |
|
|
|
|
Получ м, что d[7; 7] = 3 миним льно колич ст о тр у-мых оп р ций. Если помин ть чи, н которых ости лся минимум, то мо но осст но ить ц почку оп р ций.
p t s l d d f ! (ó ë íè p) t s l d d f; t s l d d f ! ( ñò ê g) t s g l d d f; t s g l d d f ! ( ì í f) t s g l d d s;
Ïðèì ð 2.
Ç í ðóïï ì òðèö A1 ; A2; ; As . Ê ÿ ì òðèö Ai -í ð ì ð ìè ni; mi , ïðè÷ ì mi = ni+1 . Опр лить, к ко миним льно число оп р ций умно ния тр у тся ля п р мно-ния s м триц, прич м, п р мно ть мо но лю ы ря ом стоящи м трицы.
È ñòíî, ÷òî ëÿ ï ð ìíî íèÿ óõ ì òðèö ð ì ðî [n m] è [m k] òð ó òñÿ n m k îï ð öèé óìíî íèÿ.
Åñëè A = A1(10 20) A2(20 50) A3(50 1) A4(1 100) , тосли п р мно ть м трицы поря к
A1 (A2 (A3 A4)) ;
òî í î õî èìî 125000 îï ð öèé, ñëè èõ ï ð ìíî òü
(A1 (A2 A3)) A4;
òî í î õî èìî 2200 îï ð öèé.
Если н исполь о ть принцип ин мич ско о про р ммиро - ния, то проц сс п р ор с х поря ко , которых мо но ы- числить р ссм три мо прои ни м триц, с ц лью миними-ции колич ст оп р ций умно ния, им т экспон нци льную сло ность. Дин мич ско про р ммиро ни при о ит к л орит-
му сло ности O(n3) . |
|
|
|
З м тим, что п р мно ть руппы м триц с ном р ми от i |
î |
j |
мо но р личными спосо ми: ля н которо о ы р нно о k |
îò |
i |
î j 1 сн ч л п р мно ются н илучшим о р ом м трицы |
ñ íîì ð ìè îò i î k (получ м м трицу р м р ni mk ), - т м м трицы с ном р ми от k+1 î j (получ м м трицу р м р
nk+1 mj ) и т м п р мно м получ нны н пр ы ущих ш х м трицы (получ м м трицу р м р ni mj , тр у мо колич - ст о оп р ций сть ni nk+1 mj ).
44
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw345x1.jpg)
Ò êèì î ð îì, ñëè î î í ÷èòü F [i; j] миним льно колич - ст о оп р ций ля п р мно ния м триц с ном р ми от i î j , òî
F [i; j] = |
|
min |
(F [i; k] + F [k + 1; j] + ni |
|
nk+1 |
|
mj) ; |
||||
|
i |
k |
j |
|
1 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F[i; i] = 0: |
|
|
|
|
|
|
При ин мич ском про р ммиро нии |
F [i; j] |
ычисляются |
поря к о р ст ния р ност й ин ксо , т. . н чин м с ычисл - ния F[i; i] ëÿ ñ õ i , ò ì F [i; i+ 1] ëÿ ñ õ i , ò ì F [i; i+ 2]ëÿ ñ õ i è ò. . òî í î õî èìî ëÿ òî î, ÷òî û F[i; k] è F [k+1; j] у ыли ычисл ны к мом нту ычисл ния F [i; j] . Р ульт т р - ш ния чи соот тст у т личин F [1; s] .
Ни при о ится л оритм р ш ния р ссм три мой чи,котором по личиной 1 поним тся м ксим льно и о мо - ных оптим льных р ш ний.
begin
for i := 1 to s do F [i; j] := 0; for p := 1 to s 1 do
for i := 1 to s p do
{
kol := 1; j := i + p;
for k := i to j 1 do
if kol > F [i; k] + F [k + 1; j] + ni nk+1 mj then kol := F[i; k] + F[k + 1; j] + ni nk+1 mj;
F [i; j] := kol;
}
end.
Ïðèì ð 3.
Р ссмотрим чу р спо н ния о р о . З н т кст x , í î õî èìî ì íèòü ñëî î y ýòî î ò êñò ê êèì-ëè î ðó èì ñëî-îì, ò. . í î õî èìî í éòè õî íè ñëî y строк x (эт - ч ч сто о ник т при р ктиро нии т ксто , при конт кстнойм н , при поиск ирус п мяти ВМ).
45
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw346x1.jpg)
Р ссмотрим н которую строку
x = fx1; x2; ; xng:
Для нной строки опр лим ц лочисл нную функцию отк о
F, котор я ля н которо о |
|
i |
n |
сть н и ольш число |
|
k < i |
||||||||||||||||||||||||||||||||||
ò êî , ÷òî ï ð û k |
сим оло по строки x1; x2; ; xi |
ñî ï þò |
||||||||||||||||||||||||||||||||||||||
ñ ïîñë íèìè k ñèì îë ìè: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
(x1; x2; ; xk) = (xi k+1; xi k+2 ; ; xi): |
|
|
|
|
|
(3.1) |
|||||||||||||||||||||||||||||
Р ссмотрим н сколько прим ро . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
i |
|
|
|
2 |
|
|
3 |
|
4 |
|
5 |
|
|
6 |
|
7 |
|
8 |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
x |
|
a |
|
b |
|
|
a |
|
b |
|
c |
|
|
a |
|
b |
|
a |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
F [i] |
0 |
0 |
1 |
2 |
0 |
1 |
2 |
|
3 |
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
1 |
|
2 |
|
|
3 |
|
4 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
a |
|
a |
|
|
a |
|
a |
|
a |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
F [i] |
|
0 |
|
1 |
|
|
2 |
|
3 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Р ссмотрим л оритм постро ния функции отк о . |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
Пр поло им, что функция опр л н ля i = 1; 2; ; k è |
|||||||||||||||||||||||||||||||||||||||
í î õî èìî îïð ëèòü F[i] ëÿ i = k + 1 . |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
Пусть F (k) = k0 , ò. . k0 |
|
п р я по лин ц почк , которую |
|||||||||||||||||||||||||||||||||||||
хот лось ы у личить. Поэтому ср ни м |
|
xk0+1 c |
|
xi |
è ñëè |
|||||||||||||||||||||||||||||||||||
îíè ñî ï þò, òî ïîë ì |
F (i) = k0 + 1 . В проти ном случ |
|||||||||||||||||||||||||||||||||||||||
( x |
k0+1 |
= x ) н й м торую по лин ц почку лины k |
|
< k |
0 |
, ëÿ |
||||||||||||||||||||||||||||||||||
|
6 |
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|||||||||||
которой ы ыполнялось с ойст о 3.1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
k0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k0 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k1 |
|
|
|
|
|
|
||
|
|
|
|
|
b |
|
|
|
|
c |
|
|
k0c |
|
|
|
|
|
|
|
|
d |
|
|
|
|
|
c |
|
|
|
|
c |
|||||||
|
|
|
|
|
k1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
k1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ðèñ. 3.2.1.:
È ðèñ.3.2.1. è íî, ÷òî k1 = F (k0) ( îê òü ê ÷ ñò óïð - í íèÿ).
46
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw347x1.jpg)
Îïèñ ííû éñò èÿ ïî òîðÿ ì î ò õ ïîð, ïîê
í é òñÿ j 0 , ля которо о ыполня тся с ойст о 3.1 и x(kj +1) = xi ; òî F (i) = kj + 1:
kj = 0 è x1 6= xi ; òî F (i) = 0 .
При м л оритм постро ния функции отк о .
Ал оритм постро ния функции отк о .
begin
F (1) = 0;
for i := 2 to n do
{
k := F [i 1];
while (xk+1 =6 xi) and (k > 0) do k := F [k];
if (k = 0) and (x1 6= xi) then F [i] := 0 else F [i] := k + 1;
}
end.
Оц ним тру о мкость опис нно о ыш л оритм .
Для н которо о i н ч ни функции отк о F [i] ëè î ó ëè÷è-
òñÿ ïî ñð í íèþ ñ ïð û óùèì í ÷ íè ì F [i 1] н иницу ли о ум ньш тся. Прич м н ч ни функции F ум ньш тся (н о я т льно н иницу) столько р , сколько р отр от т цикл while . Но функция F о р нич н сни у нул м, поэтому о щ ко-
лич ст о ум ньш ний функции (оно происхо ит, сли xF [i 1]+1 =6 = xi è í ÷èí òñÿ óì íüø òüñÿ ñî í ÷ íèÿ F [i] ) н пр осхо ит о щ о колич ст у лич ний. Колич ст о у лич ний функции н пр осхо ит n . Сл о т льно, колич ст о ум ньш ний н у-т пр осхо ить n .
Т ким о р ом, тру о мкость л оритм р н колич ст у у - лич ний и ум ньш ний функции отк о F , ò. . O(n) .
Опис нный ыш л оритм мо т ыть исполь о н ля р ш - ния сл ующ й чи: опр лить хо ни н которо о сло yстроку x .
Для р ш ния пост л нной чи сц пля м строки y è x ,ст ляя м у ними н который р лит ль ( y + 0 0 +x ). Òîò
47
èí êñ i , ля которо о F (i) = jxj è ò îò ò ( j = F [i] jxj + 1сть н ч льный ин кс хо ния).
Ч стот стр ч мости нно о сло строк р н колич ст у
èí êñî j |
ля которых F (j) = jxj . |
|
|
|
|
|
|
||||||||
|
i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
x |
ô |
ï |
ì |
* |
|
|
ñ |
ô |
ï |
ì |
|
ô |
ï |
ì |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F [i] |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
2 |
3 |
0 |
1 |
2 |
3 |
Если ст ится ч н йти строк x мощности n по строку
yмощности m , то прим н ни т хники ин мич ско о про р м- миро ния по оля т получить л оритм сло ности O(n + m) .
Óïð í íè .
Р шить опис нную ыш чу, пр поло нии, что строк
yìî ò ñî ð òü ñèì îëû '*' è '?', '*' ëþ ÿ ïî ïîñë о-т льность сим оло , '?' н который о иночный сим ол.
48
à ë 4
СТРУКТУР ДАНН Х
Ч сто ч мо т ыть сформулиро н н я ык осно ных м - т м тич ских понятий, н прим р т ких, к к мно ст о, и то
л оритм р ш ния мо т ыть и ло н т рмин х осно ных оп р ций н осно ными о ъ кт ми. Для р р отки эфф кти но-о л оритм р ш ния пост л нной чи ну но про н ли иро-ть н сколько р личных структур нных. Мо т ок ться т к, что к я и структур нных по оля т ыполнять н которую и оп р ций л ко, ру и с ольшим тру ом. В этом случ ч сто ы ир ют ту структуру, котор я лучш с о по хо ит ля р ш ния с й чи ц лом (н л т м ксим льно л ким ы- полн ни ни о ной оп р ции, но по оля т ыполнить сю р оту лучш , ч м при лю ом оч и ном по хо ).
Поэтому р р отк эфф кти но о л оритм н прямую с я - н с р р откой хорош й структуры нных
В этой л о иться ря структур нных : списки, ст ки, оч р и, и пок ы тся, к к с помощью этих структур мо но пр ст лять мно ст , р фы и р ья.
4.1.СТРУКТУР ДАНН Х: СПИСКИ, СТЕКИ, ОЧЕРЕДИ
Н и ол и стной и р спростр н нной структурой нных я ляются м сси ы. т структур о норо н , т к к к с компон нты им ют о ин и тот тип и с они р но оступны.
М сси ы относятся к структур м нных со случ йным оступом: ля ы л ния н которой компон нты к им ни м сси о -ля тся ин кс ( н ч ни сп ци льно о тип ), который мо но ы- числить, поэтому эл м нты м сси ино н ы ют п р м нными
ñèí êñ ìè.
Êо ым оп р циям н м сси ми относятся поиск эл м нт и поиск м ксим льно о (миним льно о) эл м нт .
49
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw350x1.jpg)
1.Поиск эл м нт x .
(a)В прои ольном м сси тру о мкость этой оп р ции
O(n) .
(b)В отсортиро нном м сси тру о мкость этой оп р - ции O(log n) . Поиск эл м нт отсортиро нном м сси-мо но ыполнить р мя O(log n) , ñëè ê ÷ ñò
л оритм поиск исполь у тся поиск л ни м попол м ( оичный поиск), т.к. этом случ м ксим льно число ср н ний р но log n ( ля лин йно о поиск н о ср н м n=2 ñð í íèé).
Пусть L è R о о н ч ют л ый и пр ый концы инт р-л поиск эл м нт x ì ññè a .
Ал оритм оично о поиск
{
L := 0; R := n;
while (L < R) do
{
m = L+2R ;
if a[m] < x then L = m + 1 else R = m;
}
}
Óïð í íè .
Н пис ть р курр нтно ур н ни ля л оритм оично о поиск .
2.Поиск м ксим льно о (миним льно о) эл м нт .
(a)В прои ольном м сси тру о мкость этой оп р ции
O(n) .
(b)В отсортиро нном м сси тру о мкость этой оп р ции
O(1) .
Сл у т отм тить, что о ычный при м р оты с м сси ми это поиск и ы орочно и м н нни от льных компон нт м сси-. Осно ны оп р ции н м сси ми н пр пол ют ключ ния
50