ДС17о09-Динамическое-программирование (1238904)
Текст из файла
Carnegie MellonДинамическоепрограммированиеАлгоритмыи алгоритмические языкиgoo.gl/c8pyqxЛекция9, 07ноября,2017Лектор:ДмитрийСеверов,кафедраинформатики608КПМdseverov@mail.mipt.ruhttp://cs.mipt.ru/wp/?page_id=60771Методдинамического«программирования»1. РичардБеллман1953год2. Пользуетсясвойствамизадачи1.2.3.ОптимальнаяподструктураАддитивноперекрывающиесяподзадачиВозможностьзапоминаниярешенийподзадач3.
Эффективнеерекурсиии/илиперебора4. Примерызадач1.2.3.4.5.ЧислаФибоначчиОнаибольшейподпоследовательностиОредакционномрасстоянииОпорядкеперемноженияматрицОранце2ДваподходадинамическогопрограммированияНисходящееДПВосходящееДП1. Задачаразбиваетсянанужныеподзадачи2.
Нужныеподзадачирешаются3. Решенияподзадачкомбинируютсяврешениезадачи1. Решаются«всеполезные»подзадачи.2. Результатыподзадачнакапливаютсяисохраняются.3. Решенияподзадачкомбинируютсяврешениезадачи3Классическийпример:поискn-огочислаФибоначчиintfibo(inta[],intn){int Fibo(int n){if(n<2)return1;if(n<2)if(a[n])return1;Задействоватьelsereturn a[n];returnelseСохранитьFibo(n-1)+Fibo(n-2);return (a[n]=}fibo(a,n-1)+fibo(a,n-2));}4Сколькословдлиныn валфавите{0,1},несодержащихдвеидущиеподрядединицы?K(1) = 2 : 0 и 1K(2) = 3 : 00, 01 и 10K(n) = K(n-1) + K(n-2)00 15Напрямоугольномполеразмеромnxmможнодвигатьсянаоднополевнизиливправо.Сколькимиспособамиможнопопастьизлевойверхнейклеткивправуюнижнюю?1 1 1 1 1#include <iostream>using namespace std;int main() {int **a,n,m;cin >> n >> m;a = new int* [n];1111j-1ji-1 ifor(int i=0; i<n; i++) { a[i] = new int [m];for(int j=0; j<m; j++) a[i][j]=((!i || !j)?1:0); }for(int i=1; i<n; i++) for(int j=1; j<m; j++)a[i][j] = a[i-1][j] + a[i][j-1];cout << a[n-1][m-1] << endl;return 0;}6ЗадачапропоследовательностиИзпоследовательностицелыхчиселвыбратьсамуюдлиннуюстроговозрастающуюподпоследовательность.7Задачапропоследовательности1.
МассивA[N]длячиселпоследовательности2. МассивL={lk} длинстроговозрастающихподпоследовательностей,заканчивающихэлементомсномеромk≤N.НаибольшийэлементмассиваLбудетдлинойискомой подпоследовательности3. Дляпредъявленияискомойподпоследовательности,ещёодинмассив B={bk},номеровпредпоследнегоэлементаподпоследовательности,длинакоторойзаписанавlk.4. lk =max(lj)+1дляjот1доk-1таких,чтоaj <ak.89НахождениепалиндромаНайтидлинуPнаибольшегопалиндрома,которыйможетбытьсоставленизбуквзаданнойстроки S.10НахождениедлиныпалиндромаP(S)1.
Любаястрока S,состоящаяизодногосимвола,- этопалиндромдлины1.2. Строка S издвухсимволов,1. еслисимволысовпадают– этопалиндромдлины2,2. еслиразличаются– удаляемлюбойсимволиP(S)=1.3. ДлястрокиS=s1…sL длины L:1. еслиначальныйиконечныйсимволысовпадают,тоP(S)=P(s2…sL-1)+2;2. еслиразличаются,то:P(S)=max(P(s2…sL),P(s1…sL-1))длинамаксимальногопалиндрома,1. либоизстрокибезпервогосимвола2. либоизстрокибезпоследнегосимвола1112Задачаохрустальномшаре.Пытаемсянайтиусловияразбиванияхрустальногошара,сброшенногосвысоты.Имеем mодинаковыххрустальныхшаровЗакакоеминимальноечислопопытоксможемнайтиэтажN-этажногоздания,начинаяскоторогоэтажа шарыбудутразбиваться ?13Задачаохрустальномшаре.m=1¢ m=2¢ Неизбежнобросаниес¢ Кажетсяуместноделениекаждогоследующеговверхпополам.
Сбросимпервыйэтажашарс⎣N/2⎦ этажа.¢ Ответ:N попыток1. Еслипервыйшарразбит,тохватит⎣N/2⎦ попытокниже.2. Еслипервыйшарцел,тохватит⎣N/2⎦ попытоквыше.¢ Ответ:⎣N/2⎦ ?¢14Задачаохрустальномшаре(подходнаосновеДП)Пусть,дляпервойпопыткиоптималенэтажT.ВремяэкспериментаF(m,N)зависитотрезультатаПервыйшарразбит:F(m-1,T-1)+1Первыйшарцел:F(m,N-T)+1НаэтажеT:F(m,N)=max(F(m-1,T-1),F(m,N-T))+1Вздании:F(m,N)=minT (1+max(F(m-1,T-1),F(m,N-T)));F(1,N)=N; F(m,0)=0; F(m,1)=1; F(m,2)=215НисходящееДП16ВосходящееДП17ЗадачаоминимальнойсдачеИмеетсянеограниченноеколичествомонетдостоинств V={v1,…,vK}."i: vi<vi+1КакоеминимальноеколичествомонетD(S)потребуетсячтобынабратьзаданнуюсуммуS?D(S)=mink(D(S– Vk))1819ЗадачаовариантахсдачиИмеетсянеограниченноеколичествомонетдостоинств V={v1,…,vK}."i: vi<vi+1Сколькимиспособамиможнонабратьзаданнуюсумму?2021КодХаффманаИспользуетсядлясжатияданныхпутемкодированияболеечастыхсимволовболеекороткимипоследовательностямибитов.2223КодХаффманаБолеечастыесимволыпоследовательностидолжныиметьболеекороткийкод,аболеередкие– болеедлинный¢ Чтобыисключитьпроблемадекодированиясимволов,кодированых двоичнымикодамиразнойдлины,естьпрефиксноекодирование:¢Кодникакогосимволанеявляетсяначаломкодадругого.¢Кодирование– бинарноедерево,гделистьясодержатсимволы,анаборребер(левое– 0,правое– 1),входящихвпутьоткорнядереваклисту,порождаеткодсимвола.2425Кодирование26Декодирование27.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.