Dinamikus programozás párhuzamosítási lehetőségekkel
|
|
- Márton Kocsis
- 6 évvel ezelőtt
- Látták:
Átírás
1 8. tavasz Dinamikus programozás párhuzamosítási lehetőségekkel A. Grama, A. Gupta, G. Karypis és V. Kumar: Introduction to Parallel Computing, Addison Wesley, könyv, valamint Michael Goodrich (Univ. California) anyaga alapján Vázlat A dinamikus programozás (DP) áttekintése Soros, egyszerű-argumentumú (Monadic) DP Nem soros, egyszerű-argumentumú DP Soros, összetett-argumentumú (Polyadic) DP Nem soros, összetett-argumentumú DP Dinamikus programozás Dinamikus programozás
2 8. tavasz A dinamikus programozás áttekintése A dinamikus programozás (DP) széles körben használt optimalizációs problémák megoldására: ütemezés, string-szerkesztés, csomagolási probléma, stb. A problémákat részproblémákra bontjuk és ezek megoldásait kombináljuk, hogy a nagyobb probléma megoldását megtaláljuk. Az oszd meg és uralkodj típusú megoldási módszerrel szemben, itt a részproblémák között kapcsolatok, átfedések állhatnak fent (overlapping subproblems). Az elnevezés matematikai optimailzálásra utal. Dinamikus programozás A dinamikus programozás áttekintése A problémamegoldás menete:. Részproblémákra osztás.. A részproblémák optimális megoldása rekurzívan.. Az optimális megoldások felhasználása az eredeti feladat optimális megoldásának megtalálásához. A dinamikus programozás (DP) során a részmegoldások eredményeit gyakran táblázatokban tároljuk, hogy azokat szemben a rekurzív megközelítésekkel ne kelljen újra és újra kiszámolni (memoization). Dinamikus programozás Dinamikus programozás
3 8. tavasz Dinamikus programozás: példa Tekintsük a hurokmentes irányított gráfokban két csúcs (csomópont) között a legrövidebb út problémáját. Az i és j csomópontokat összekötő él költsége c(i, j). A gráf n csomópontot tartalmaz:,,, n-, és az i csomópontból a j csomópontba akkor vezethet él, ha i < j. A csomópont a forrás és az n- csomópont a cél. Jelölje f(x) a legrövidebb utat a csomóponttól x-ig. Dinamikus programozás Dinamikus programozás: példa Irányított gráf, melyben a legrövidebb utat számolhatjuk a és csomópontok között. Dinamikus programozás 6 Dinamikus programozás
4 8. tavasz Dinamikus programozás A DP formátumú probléma megoldását tipikusan a lehetséges megoldások minimumaként vagy maximumaként fejezzük ki. Ha r az x, x,, x l részproblémák kompozíciójából meghatározott megoldás költségét jelenti, akkor r a következő alakban írható Itt g az un. kompozíciós függvény. Ha minden probléma optimális megoldása a részfeladatok optimális megoldásának optimális kompozíciójaként kerül meghatározásra és a minimum (vagy maximum) érték kiválasztásra kerül, akkor DP formátumú megoldásról beszélünk. (Metamódszer, nem konkrét algoritmus.) Dinamikus programozás 7 Dinamikus programozás: példa f(x) f(x) r=g(f(x),f(x)) f(x) f(x8)=min{r,r,r} f(x) f(x) r=g(f(x),f(x)) f(x6) f(x7) r=g(f(x),f(x6),f(x7)) Composition of solutions into a term Minimization of terms Az f(x 8 ) megoldás meghatározásának kompozíciója és számítása részfeladatok megoldásából. Dinamikus programozás 8 Dinamikus programozás
5 8. tavasz Dinamikus programozás A rekurzív DP egyenletet funkcionális egyenletnek, vagy optimalizációs egyenletnek is nevezzük. A legrövidebb út problémánál a kompozíciós függvény f(j) + c(j, x). Ez egyszerű rekurzív tagként tartalmazza (f(j)). Az ilyen DP megfogalmazású feladatot monadic típusúnak (egyszerű-argumentumúnak) nevezzük. Ha a rekurzív kompozíciós függvény több tagú, akkor a DP feladat megszövegezése polyadic (összetettargumentumú) típusú. Dinamikus programozás 9 Dinamikus programozás A részproblémák közötti kapcsolatokat gráf segítségével fejezhetjük ki. Ha a gráf szintekre bontható és a probléma megoldása egy bizonyos szinten csak az előző szinten megjelenő problémamegoldástól függ, ekkor a megfogalmazást sorosnak nevezzük, egyébként pedig nem sorosnak. A két kritérium alapján a DP feladat megfogalmazásokat osztályozhatjuk: serial-monadic, serial-polyadic, nonserial-monadic, non-serial-polyadic, vagy egyéb. Az osztályozás azért fontos, mert meghatározza konkurenciát és a függőségeket, amely a párhuzamos megoldásokhoz vezethet. Dinamikus programozás Dinamikus programozás
6 8. tavasz Soros, egyszerű-argumentumú DP Az egész osztályra vonatkozó általános megfogalmazást, mintát nehéz megadni. Két reprezentatív feladat kerül bemutatásra: A legrövidebb út probléma többszintű gráfban (shortest-path problem for a multistage graph), / típusú hátizsák probléma (/ knapsack problem). Célunk a feladatok párhuzamos megfogalmazása és ezek alapján az osztályon belüli közös elvek lefektetése. Dinamikus programozás Legrövidebb út probléma A legrövidebb út problémának speciális osztálya, amikor a gráf súlyozott és többszintű. Jelen esetben a szintek száma r +. Minden szinten n csomópont van és minden csomópont az i. szintről össze van kötve az i + szint minden egyes csomópontjával. A. szint és az r. csak egy csomópontot tartalmaz, ezeket forrás (S) és cél (R) csomópontoknak nevezzük. Célunk legrövidebb utat találni S-től R-ig. Dinamikus programozás Dinamikus programozás 6
7 8. tavasz Legrövidebb út probléma v v v c c vr- cs v v cr-r cs S R csn- cr-n-r vn- cn-n- cn-n- vn- vn- vr-n- Soros, egyszerű-argumentumú (monadic) DP megfogalmazása a legrövidebb út problémának olyan gráfban, ahol a csomópontokat szintekbe szervezhetjük. Dinamikus programozás Legrövidebb út probléma A gráf l szintjének i. csomópontja:v il és a v il csomópontot v j l+ csomóponttal összekötött él súlya c i l,j. Bármely v il csomópont és az cél csomópont R költsége: C il. Ha n csomópont van egy szinten (l), akkor a költségek (legrövidebb utak R-ig) egy vektorban foglalhatók össze [C l, C l,, C n l - ] T. Ez a vektor C l. Megjegyzés: C = [C ]. Az l szint i eleme a céltól C il = min {(c i l,j + C j l+ ) j az l + szint egy csomópontjának indexe} Dinamikus programozás Dinamikus programozás 7
8 8. tavasz Legrövidebb út probléma Mivel a v j r- csomópontokat csak egy-egy él köti össze a cél, R csomóponttal az r szinten, a C j r- költsége: c j r, - R. Ezért: A feladat soros és egyszerű-argumentumú (monadic) típusú. Dinamikus programozás Legrövidebb út probléma Az l színt valamely csomópontjától a célcsomópont, R elérésének költsége, ahol ( < l < r ): Dinamikus programozás 6 Dinamikus programozás 8
9 8. tavasz Legrövidebb út probléma A probléma megoldását egy módosított mátrix-vektor szorzat formájában fejezhetjük ki Helyettesítsük az összeadás operációt minimalizálással és a szorzás műveletet összeadással, az előző egyenletek a következő alakúak lesznek: ahol C l és C l+ n x méretű vektorok a cél csomópont elérésének költségeit reprezentálják az l és l + színt minden egyes csomópontjától mérve. Dinamikus programozás 7 Legrövidebb út probléma Az M l,l+ mátrix n x n méretű, és minden (i, j) eleme az l szint i csomópontjának az l + szint j csomópontjával történő összekötés költségét tartalmazza: A legrövidebb út problémát r mátrix-vektor szorzatok sorozataként definiáltuk: C r-,c r-k- (k =,,, r-), C. Dinamikus programozás 8 Dinamikus programozás 9
10 8. tavasz Párhuzamos legrövidebb út probléma Az algoritmus úgy párhuzamosítható, mint bármelyik mátrix-vektor szorzást megvalósító algoritmus. n processzor elem számolhat minden C l vektort. Sok gyakorlati esetben az M mátrix elemei ritkák lehetnek. Ilyenkor ritkamátrixokhoz kapcsolódó módszert alkalmazzunk. Dinamikus programozás 9 / hátizsák probléma / knapsack problem A thief is robbing the King s treasury, but he can only carry a load weighing at most W Adott: S halmaz n elemmel és egy súlyhatár c, minden i elemnek p i pozitív egész értéke van (profit) és pozitív egész súlya Cél: úgy válasszuk ki az elemeket, hogy az összérték maximális legyen, de az összsúly kisebb legyen, mint c. T jelölje azokat az elemeket, amit kiválasztunk, T S Cél: összérték maximalizálása i T Feltétel: a súlyhatáron belül kell maradni p i i T C Dinamikus programozás Dinamikus programozás
11 8. tavasz / hátizsák probléma: példa Adott: n elemű S halmaz, minden elem p i pozitív értékű és pozitív súlyú Cél: válasszunk ki elemeket, hogy az összérték maximális legyen, de az összsúly ne haladja meg c-t. Összesen n eset lehet! Elemek: Súly: Érték: N N N 6 N N $ $ $6 $ $8 knapsack 9 N Megoldás: ( N) ( N) ( N) Összérték: 8+6+ = $6 Dinamikus programozás / hátizsák probléma, első próbálkozás S i : A halmaz elemeinek azonosítója -től i-ig (i < n). Definiálja F[i] = a legjobb kiválasztást S i -ből. Legyen pl. S = {(,),(,),(8,),(,),(,9)} érték-súly párok, c = A legjobb S, ha csak négyet veszünk ki: Összsúly:, érték: A legjobb S : az. benne van, de a. nem Rossz hír: S nem része az S optimális megoldásnak Dinamikus programozás Dinamikus programozás
12 8. tavasz / hátizsák probléma, más megközelítés S i : Az elemek halmaza -től i-ig, i < n. Definiálja F[i, x] = azs i halmazból a legjobb kiválasztást, ahol a súly legföljebb x további paraméter Ez optimális részprobléma megoldáshoz vezet. Az S i legjobb kiválasztás legföljebb x súllyal, két esetet jelenthet: -Ha > x, akkor az i. elemet nem lehet hozzávenni, mert súlya nagyobb, mint az aktuális határ - Egyébként: ha a legjobb S i- részhalmaz súlya x - és ehhez vagy jön i, vagy nem eredményez nagyobb értéket F[ i, x] if wi > x F[ i, x] = max{ F[ i, x], F[ i, x w ] + p } i i Dinamikus programozás / hátizsák algoritmus F[i, x] rekurzív formula: F[ i, x] F[ i, x] = max{ F[ i, x], F[ i, x wi ] + pi} if w i > x F[i, x] = az -től i-ig tartó elemekből a legjobb kiválasztás, ahol az összsúly legfeljebb x Alapeset: i =, nem került elem kiválasztásra. Összérték. A feladat megoldása: a legnagyobb érték az n. sorban, utolsó (c) oszlopban Futási idő: O(nc). Nem n ideig tart. Dinamikus programozás Dinamikus programozás
13 8. tavasz / hátizsák algoritmus Algorithm -Knapsack(S, c): Input: S halmaz elemei p i értékkel, súllyal; valamint a max. súly c Output: a legjobb részhalmaz értéke (F[n, c]), hogy teljesül: összsúly c for x to c do F[, x] for i to n do F[i, ] for i to n do for x to c do if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] Mivel F[i, x] csak F[i -,*] értékeitől függ, elég lehet vektorokat használni Dinamikus programozás / hátizsák példa n = az adatok száma c = kapacitás (maximális összsúly) Elemek: i súly ( ), profit (p i ) 6 Dinamikus programozás 6 Dinamikus programozás
14 8. tavasz Példa i \ x for x to c do F[, x] Dinamikus programozás 7 Példa i \ x for i to n do F[i, ] Dinamikus programozás 8 Dinamikus programozás
15 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = - Dinamikus programozás 9 Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Dinamikus programozás
16 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Dinamikus programozás 6
17 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = - Dinamikus programozás Dinamikus programozás 7
18 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = - Dinamikus programozás Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás 6 Dinamikus programozás 8
19 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás 7 Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x 7 if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás 8 Dinamikus programozás 9
20 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x 7 if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x =.. x - = -..- Dinamikus programozás 9 Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x 7 if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Dinamikus programozás
21 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x 7 7 if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = = x = x - = Dinamikus programozás Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x 7 7 if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = 6 = x =.. x - = -..- Dinamikus programozás Dinamikus programozás
22 8. tavasz Példa ; p i : (; ) : (; ) : (; ) : (; 6) i \ x if <= x F[i, x] max(f[i -, x], F[i -, x - ] +p i ) F[i, x] F[i -, x] i = p i = 6 = x = x - = Dinamikus programozás Példa Az algoritmus a maximális összsúlyt vette figyelembe úgy, hogy a zsákba tehető F[n, c] érték a lehető legnagyobb legyen. Az elemek kiolvasásához egy visszafele haladó algoritmus szükséges, amely a táblázatot használja: i n, x c while (i, x > ) if F[i, x] <> F[i -, x] Jelöljük meg az i. elemet, hogy a zsákban van i = i -,x = x i = i - Dinamikus programozás Dinamikus programozás
23 8. tavasz / hátizsák probléma (könyv szerint) Adott a c kapacitású hátizsák és n objektumból álló halmaz,,,n. Minden objektumot súly és p i profit jellemez. Legyen v = [v, v,, v n ] egy megoldás vektor, amelyben v i = ha az i. objektum nincs a hátizsákban v i = ha a hátizsákban van. A cél az objektumok olyan részhalmazát megtalálni, amit a hátizsákba helyezhetünk, azaz (az összsúly nem nagyobb, mint a kapacitás) és a profit maximalizált. Dinamikus programozás / hátizsák probléma Legyen a maximális profit F[i, x] az x kapacitású hátizsákhoz kapcsolódóan ha a következő objektumrészhalmazt használjuk {,,,i}. A DP megfogalmazása: Dinamikus programozás 6 Dinamikus programozás
24 8. tavasz / hátizsák probléma Konstruáljuk meg az n x c méretű F táblázatot soronként haladva. Egy elem kitöltése két elem ismeretét igényli az előző sorból: egy ugyanabból az oszlopból és egy olyan oszloptávolságnyira, mint amilyen súllyal az objektum a sorhoz tartozik. Minden elem kiszámolása konstans idejű; a soros futási komplexitás Θ(nc). A megfogalmazás soros, egyszerű-argumentumú. Dinamikus programozás 7 / hátizsák probléma Table F n i Fij Weights j-wi j c- c Processors P Pj-wi- Pj- Pc- Pc- A / hátizsák probléma F táblájának számítása. Az F[i,j] meghatározásához szükséges kommunikáció processzorelemekkel, amelyek tartalmazzák F[i-,j] és F[i-,j- ] elemeket. Dinamikus programozás 8 Dinamikus programozás
25 8. tavasz / hátizsák probléma Ha c processzorelemet használunk (CREW PRAM ideális, közös memóriás modellen), párhuzamos algoritmust készíthetünk az oszlopok processzorokhoz particionálásával és O(n) futási idővel. Ha osztott memóriás modellen minden processzorelem lokálisan tárolja az objektumok súlyait és profitjait a j. iteráció során, F[j, r] számításához a P r- processzoron lokálisan rendelkezésre áll F[j-, r], de F[j-, r-w j ]-t másik processzorelemtől kell megkapni. n iteráció ekkor O(n log c) ideig tart Dinamikus programozás 9 Nem soros, egyszerű-argumentumú DP megfogalmazás: Longest-Common- Subsequence (LCS) Adott egy A = <a, a,, a n > sorozat; az A részsorozatát kapjuk, ha valahány elemet törlünk belőle. Cél: Adott két részsorozat: A = <a, a,, a n > és B = <b, b,, b m >, keressük meg a leghosszabb sorozatot, ami részsorozata egyaránt A-nak és B-nek. Példa: ha A = <c,a,d,b,r,z> és B = <a,s,b,z>, a leghosszabb közös részsorozata A-nak és B-nek <a,b,z>. Dinamikus programozás Dinamikus programozás
26 8. tavasz Leghosszabb közös részsorozat Jelölje F[i, j] az A első i elemének és B első j elemének leghosszabb közös részsorozat hosszát. Az LCS célja, hogy megtaláljuk F[n, m] értékét (és a sorozat elemeit). Ekkor igaz, hogy: Dinamikus programozás Leghosszabb közös részsorozat Az algoritmus kiszámolja a két-dimenziós F táblát soroszlop sorrendben. Az átlós csomópontok mindegyike két részproblémához kapcsolódik, az előző szinthez és az azt megelőző szinthez. Ezért ez a DP megfogalmazás nem soros, egyszerű-argumentumú típusú. Dinamikus programozás Dinamikus programozás 6
27 8. tavasz Leghosszabb közös részsorozat m n p p pn- (a) (b) (a) Az LCS táblázat számítási elemei. A számítás a jelzett átlós irányban halad. (b) A táblázat elemeinek leképzése a processzor elemekre. Dinamikus programozás Leghosszabb közös részsorozat Consider the LCS of two amino-acid sequences H E A G A W G H E E and P A W H E A E. For the interested reader, the names of the corresponding amino-acids are A: Alanine, E: Glutamic acid, G: Glycine, H: Histidine, P: Proline, and W: Tryptophan. H E A G A W G H E E P A W H E A E Az LCS: A W H E E. Dinamikus programozás Dinamikus programozás 7
28 8. tavasz Parallel LCS A táblázat elemeinek kiszámolása átlós irányban történik a bal felső saroktól a a jobb alsó irányban. Ha n processzort használunk (CREW PRAM), minden elem kiszámolása átlósan konstans ideig tart. A két n hosszú szekvenciával az algoritmus n- átlós lépést tesz összesen. Dinamikus programozás Parallel LCS Az algoritmus processzorok lineáris tömbjére is adaptálható: a P i processzor elem az F tábla (i+). oszlopának meghatározásáért felelős. Az F[i,j] kiszámolásához a P j- processzorelemnek szüksége van F[i-,j-] vagy F[i,j-] értékre a tőle balra lévő processzor elemtől, amely kommunikációt jelent. A számítás konstans idejű (t c ) minden elemre. A teljes parallel idő: A hatékonyság felső korlátja.! Dinamikus programozás 6 Dinamikus programozás 8
29 8. tavasz Soros, összetett-argumentumú DP: Floyd legrövidebb út algoritmusa, minden párra Adott egy súlyozott gráf G(V,E), Floyd algoritmusa a csúcspárok közötti d i,j költségeket határozza meg, hogy a legrövidebb utat célozza meg. Legyen d i k,j a minimum költségű út az i csomóponttól a j csomópontig, és csak a következő csúcsokat használja v,v,,v k-. Így: Csak a,, k- csúcsokat használja i A,, k- csúcsokat használja (nem megy át k-n) k j Csak a,, k- csúcsokat használja Dinamikus programozás 7 Nem soros összetett-argumentumú DP megfogalmazás: Optimális mátrix zárójelezési probléma Amikor mátrixok sorozatát kell összeszorozni, akkor a szorzás sorrendje alapvetően meghatározza a műveletek (szorzások) számát. Legyen C[i,j] (egy résznél N[i,j] a jelölés!) az A i, A j mátrixok optimális szorzásának költsége. A láncszorzást két kisebb lánc szorzására lehet bontani, A i,a i+,,a k és A k+,,a j. Az A i,a i+,,a k eredménye d i x d k+ méretű mátrix, az A k+,,a j lánc eredménye d k+ x d j+ méretű mátrix. A két mátrix összeszorzásának költsége (a szorzások száma) d i d k+ d j+. Dinamikus programozás 8 Dinamikus programozás 9
30 8. tavasz Mátrixok láncszorzása Emlékeztető: Mátrix-szorzás C = AB A mérete d e, B mérete e f C[ i, j] = e k = A[ i, k] B[ k, j] e B f j O(def )idő e d A i C i,j d f Dinamikus programozás 9 Mátrixok láncszorzása Mátrixok láncszorzása: Számítandó A = A A A n- A i mérete d i d i+ Feladat: hogyan zárójelezzük? Példa B: C: 7 D: 7 (BC)D = szorzás B(CD) + 7 = szorzás Dinamikus programozás 6 Dinamikus programozás
31 8. tavasz Felsorolásos megközelítés Mátrixok láncszorzása algoritmus: Próbáljuk minden lehetséges módon zárójelezni A=A A A n- Számoljuk ki minden esetre a szorzások számát A legjobbat vegyük Futási idő: A zárójelezések száma = az n csomópontú bináris fák számával azonos Exponenciálisan nő Gyakorlatban nem megvalósítható Dinamikus programozás 6 Egy mohó algoritmus Ötlet: a legkevesebb műveletet használó szorzatokat válasszuk ki elsőként. Példa: A: B: 9 C: 9 D: 99 Ötlet szerint: A((BC)D) A legjobb (AB)(CD) =8789 szorzás =899 szorzás Dinamikus programozás 6 Dinamikus programozás
32 8. tavasz Másik mohó algoritmus Ötlet: a legtöbb műveletet használó szorzatokat válasszuk ki elsőként. Példa: A: B: C: D: Ötlet szerint (AB)(CD) Legjobb A((BC)D) ++ = szorzás ++ = szorzás Dinamikus programozás 6 Egy rekurzív megközelítés Definiáljunk részproblémákat: Keressük meg az A i A i+ A j legjobb zárójelezését. Legyen N i,j = a műveletek száma ennél a részfeladatnál. Az egész feladatra optimális megoldás N,n-. A részfeladat optimalizálás: Az optimális megoldás optimális részproblémákként lehet definiálni Kell, hogy legyen néhány legvégül futó szorzás (a kifejezésfa gyökere) az optimális megoldásnál. Mondjuk a végső szorzás az i indexnél van: (A A i )(A i+ A n- ). Ekkor az optimális megoldás N,n- két optimális részfeladat megoldása: N,i és N i+,n-, valamint az utolsó szorzás költsége. Ha a globális optimumnak nem ezek az optimális részproblémái, akkor tudunk definiálni még jobb optimális megoldást. Dinamikus programozás 6 Dinamikus programozás
33 8. tavasz Karakterisztikus egyenlet A globális optimális megoldást optimális részproblémákként kell definiálni, attól függően, hogy hol van az utolsó szorzás. Tételezzük fel az összes lehetséges helyet a végső szorzatra: Az A i mérete d i d i+. Így a karakterisztikus egyenlet N i,j -re a következő: N i, j = j+ i k< j min{ Ni, k + Nk+, j + didk+ d } Ezek a részfeladatok nem függetlenek, hanem átfedésben vannak egymással. Dinamikus programozás 6 Dinamikus programozási algoritmus Mivel a részfeladatok átfedik egymást, nem használunk rekurziót. Helyette bottomup módon építkezünk. N i,i -k meghatározása egyszerű, ezzel kezdünk. Ezután,, részfeladat. Futási idő: O(n ) Algorithm matrixchain(s): Input: a szorzandó mátrixok S sorozata Output: az S optimális zárójelezésének a száma for i to n- do N i,i for b to n- do for i to n-b- do j i+b N i,j + for k i to j- do N i,j min{n i,j, N i,k +N k+,j +d i d k+ d j+ } Dinamikus programozás 66 Dinamikus programozás
34 8. tavasz Dinamikus programozás A bottom-up konstrukció átlósan tölti ki az N tömböt. N i,j értékeket kap az előző i. sor és j. oszlop elemeiből. A tábla elemeinek kitöltése O(n) idejű. Teljes futási idő: O(n ) A zárójelezést úgy kaphatjuk meg, ha eltároljuk k -t N minden elemére. N i, j = { Ni, k + Nk+, j + didk+ d j+ i k< j N j n- i n- min } válasz Dinamikus programozás 67 Láncszorzás algoritmus Algorithm matrixchain(s): Input: a szorzandó mátrixok S sorozata Output: az S optimális zárójelezésének száma for i to n- do N i,i for b to n- do //b a műveletek száma for i to n-b- do j i+b N i,j +infinity for k i to j- do sum = N i,k +N k+,j +d i d k+ d j+ if (sum < N i,j ) then N i,j sum O i,j k return N,n- Példa: ABCD A: B: C: D: N A AB A(BC) (A(BC))D B BC (BC)D Dinamikus programozás 68 C CD D Dinamikus programozás
35 8. tavasz A műveletek visszanyerése Példa: ABCD A: B: C: D: N A AB A(BC) (A(BC))D B BC (BC)D C CD D // return expression for multiplying // matrix chain A i through A j exp(i,j) if (i=j) then // base case, matrix return A i k = O[i,j] // see red values on left S = exp(i,k) // recursive calls S = exp(k+,j) return ( S S ) Dinamikus programozás 69 Optimal Matrix-Parenthesization Problem We have: Dinamikus programozás 7 Dinamikus programozás
36 8. tavasz Optimális mátrix láncszorzás C[,] C[,] C[,] C[,] C[,] C[,] C[,] C[,] C[,] C[,] Nem soros, összetett-argumentumú DP megfogalmazás mátrixok láncszorzásának optimális meghatározására. A négyzetek a mátrixok láncszorzatának optimális költségét jelentik. A körök lehetséges zárójelezést. C[i, j] jelölés azonos a korábbi N i,j -vel Dinamikus programozás 7 Optimális mátrix láncszorzás P P P P P P P6 P7 (,) (,) (,) (,) (,) (,6) (,7) (,8) (,) (,) (,) (,) (,6) (,7) (,8) Diagonal 7 (,) (,) (,) (,6) (,7) (,8) Diagonal 6 (,) (,) (,6) (,7) (,8) (,) (,6) (,7) (,8) (6,6) (6,7) (6,8) (7,7) (7,8) Diagonal (8,8) Diagonal Diagonal Átlós számítási sorrend Dinamikus programozás 7 Dinamikus programozás 6
37 8. tavasz Párhuzamosítási lehetőség Tételezzünk fel egy gyűrűs logikai processzor topológiát. Az l lépésben minden processzor elem egyetlen elemet számol ki, amely az l. átlóhoz tartozik. A C tábla kiszámítása során, minden processzor elküldi broadcasting módon az általa kiszámolt elemeket az összes többi processzornak. A következő érték lokálisan számítható. Dinamikus programozás 7 Az általános dinamikus programozási technika Általában olyan feladatoknál alkalmazzuk, amelyek első ránézésre rengeteg időt vesznek igénybe. Részei: Egyszerű részproblémák: a részproblémákat néhány változó függvényeként kell definiálni. Részprobléma optimalitás: a globális optimum a részproblémák optimumaként definiálható. Átfedő, kapcsolódó részproblémák: a részfeladatok nem függetlenek, hanem átfedőek (ezért bottom-up konstrukcióban kell dolgozni). Dinamikus programozás 7 Dinamikus programozás 7
38 8. tavasz Parallel dinamikus programozási algoritmusok A számítási menetet gráfként reprezentálva, háromféle párhuzamosítási lehetőséget azonosíthatunk: csomópontokon belüli párhuzamosság; egy szinten a csomópontok közötti párhuzamosítás; és futószalagosított csomópontok (pipelining) eltérő szintű csomópontok között. AZ első kettő soros megfogalmazású, a harmadik nem soros DP. Az adatok helyzete (hová rendeljük) a teljesítmény szempontjából kritikus. Dinamikus programozás 7 Dinamikus programozás 8
Partíció probléma rekurzíómemorizálással
Partíció probléma rekurzíómemorizálással A partíciószám rekurzív algoritmusa Ω(2 n ) műveletet végez, pedig a megoldandó részfeladatatok száma sokkal kisebb O(n 2 ). A probléma, hogy bizonyos már megoldott
Programozási módszertan. Mohó algoritmusok
PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás
Fibonacci számok. Dinamikus programozással
Fibonacci számok Fibonacci 1202-ben vetette fel a kérdést: hány nyúlpár születik n év múlva, ha feltételezzük, hogy az első hónapban csak egyetlen újszülött nyúl-pár van; minden nyúlpár, amikor szaporodik
Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása
PM-06 p. 1/28 Programozási módszertan Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu
Dinamikus programozás vagy Oszd meg, és uralkodj!
Dinamikus programozás Oszd meg, és uralkodj! Mohó stratégia Melyiket válasszuk? Dinamikus programozás vagy Oszd meg, és uralkodj! Háromszögfeladat rekurzívan: c nj := a nj ha 1 j n c ij := a ij + max{c
Kereső algoritmusok a diszkrét optimalizálás problémájához
Kereső algoritmusok a diszkrét optimalizálás problémájához A. Grama, A. Gupta, G. Karypis és V. Kumar: Introduction to Parallel Computing, Addison Wesley, 2003. könyv anyaga alapján A kereső eljárások
Kereső algoritmusok a diszkrét optimalizálás problémájához
Kereső algoritmusok a diszkrét optimalizálás problémájához A. Grama, A. Gupta, G. Karypis és V. Kumar: Introduction to Parallel Computing, Addison Wesley, 2003. könyv anyaga alapján A kereső eljárások
Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat
PM-07 p. 1/13 Programozási módszertan Dinamikus programozás: A leghosszabb közös részsorozat Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-07
Optimalizációs stratégiák 1.
Optimalizációs stratégiák 1. Nyers erő, Oszd meg és uralkodj, Feljegyzéses, Dinamikus, Mohó előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János
angolul: greedy algorithms, románul: algoritmi greedy
Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város
Általános algoritmustervezési módszerek
Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus
Csíkszereda IRT-. kurzus 3. Előadás: A mohó algoritmus 1 Csíkszereda IRT. kurzus Bevezetés Az eddig tanult algoritmus tipúsok nem alkalmazhatók: A valós problémák nem tiszta klasszikus problémák A problémák
Dinamikus programozás II.
Dinamikus programozás II. Dinamikus programozás stratégiája A dinamikus programozás stratégiája 1. Az [optimális] megoldás szerkezetének tanulmányozása. 2. Részproblémákra és összetevőkre bontás úgy, hogy:
Dinamikus programozás - Szerelőszalag ütemezése
Dinamikus programozás - Szerelőszalag ütemezése A dinamikus programozás minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja meg, az eredményt egy táblázatban tárolja, és ezáltal
egy szisztolikus példa
Automatikus párhuzamosítás egy szisztolikus példa Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus Automatikus párhuzamosítási módszer ötlet Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus
Algoritmusok bonyolultsága
Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,
1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)
Matematika A2c gyakorlat Vegyészmérnöki, Biomérnöki, Környezetmérnöki szakok, 2017/18 ősz 1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás) 1. Valós vektorterek-e a következő
Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t
Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,
Algoritmusok bonyolultsága
Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18 Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda
Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz
2018/2019 ősz Elérhetőségek Előadó: (safaro@math.bme.hu) Fogadóóra: hétfő 9-10 (H épület 3. emelet 310-es ajtó) A pontos tárgykövetelmények a www.math.bme.hu/~safaro/kalkulus oldalon találhatóak. A mátrix
Algoritmizálás, adatmodellezés tanítása 8. előadás
Algoritmizálás, adatmodellezés tanítása 8. előadás Elágazás és korlátozás A backtrack alkalmas-e optimális megoldás keresésére? Van költség, és a legkisebb költségű megoldást szeretnénk előállítani. Van
Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer
PM-03 p. 1/13 Programozási módszertan Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer Werner Ágnes Villamosmérnöki és Információs Rendszerek
11. Előadás. 11. előadás Bevezetés a lineáris programozásba
11. Előadás Gondolkodnivalók Sajátérték, Kvadratikus alak 1. Gondolkodnivaló Adjuk meg, hogy az alábbi A mátrixnak mely α értékekre lesz sajátértéke a 5. Ezen α-ák esetén határozzuk meg a 5 sajátértékhez
Gráfelméleti feladatok. c f
Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,
A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/
Operációkutatás I. 2018/2019-2. Szegedi Tudományegyetem Informatika Intézet Számítógépes Optimalizálás Tanszék 2. Előadás LP alapfeladat A lineáris programozás (LP) alapfeladata standard formában Max c
Mohó algoritmusok. Példa:
Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus sokszor olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Ezt gyakran dinamikus programozás alapján
Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).
Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj Divide & Conquer (,,Oszd meg és uralkodj ) paradigma Divide: Osszuk fel az adott problémát kisebb problémákra. Conquer: Oldjuk meg a kisebb
Számítógépes döntéstámogatás. Genetikus algoritmusok
BLSZM-10 p. 1/18 Számítógépes döntéstámogatás Genetikus algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu BLSZM-10 p. 2/18 Bevezetés 1950-60-as
Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.
Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME
A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2017/
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatika Intézet Számítógépes Optimalizálás Tanszék 2. Előadás LP alapfeladat A lineáris programozás (LP) alapfeladata standard formában Max c
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat
2. Visszalépéses keresés
2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel
Dinamikus modellek szerkezete, SDG modellek
Diagnosztika - 3. p. 1/2 Modell Alapú Diagnosztika Diszkrét Módszerekkel Dinamikus modellek szerkezete, SDG modellek Hangos Katalin PE Villamosmérnöki és Információs Rendszerek Tanszék Diagnosztika - 3.
4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI
4. Fuzzy relációk Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Klasszikus relációk Halmazok Descartes-szorzata Relációk 2 Fuzzy relációk Fuzzy relációk véges alaphalmazok
Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat
PM-04 p. 1/18 Programozási módszertan Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu
Algoritmusok és adatszerkezetek gyakorlat 07
Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet
A szimplex algoritmus
. gyakorlat A szimplex algoritmus Az előző órán bevezetett feladat optimális megoldását fogjuk megvizsgálni. Ehhez új fogalmakat, és egy algoritmust tanulunk meg. Hogy az algoritmust alkalmazni tudjuk,
1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007
Hálózatok II 2007 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Szerda 17:00 18:30 Gyakorlat: nincs Vizsga írásbeli Honlap: http://people.inf.elte.hu/lukovszki/courses/g/07nwii
Occam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
Az optimális megoldást adó algoritmusok
Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.
Gráf-algoritmusok Legrövidebb utak
https://www.cs.princeton.edu/~rs/algsds07/15shortestpaths.pdf Gráf-algoritmusok Legrövidebb utak Sapientia-EMTE 2017-18 Typesetting in TeX Két pont között, akkor van él, ha közéjük 1 2 3 4 eső szó szekvencia
Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.
Leghosszabb közös részsorozat Egy sorozat, akkor részsorozata egy másiknak, ha abból elemeinek elhagyásával megkapható. A feladat két sorozat X = (x 1,...,x m ) és Y = (y 1,...,y n ) leghosszabb közös
Korlátozás és szétválasztás módszere Holló Csaba 2
Korlátozás és szétválasztás módszere Holló Csaba 2 A módszert Imreh Balázs, Imreh Csanád: Kombinatorikus optimalizálás Novadat, Győr, 25 egyetemi tankönyve alapján, kisebb változtatásokkal fogjuk bemutatni.
Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:
Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)
Algoritmuselmélet 18. előadás
Algoritmuselmélet 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Május 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok
Dr. Schuster György február / 32
Algoritmusok és magvalósítások Dr. Schuster György OE-KVK-MAI schuster.gyorgy@kvk.uni-obuda.hu 2015. február 10. 2015. február 10. 1 / 32 Algoritmus Alapfogalmak Algoritmus Definíció Algoritmuson olyan
Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében
Infobionika ROBOTIKA X. Előadás Robot manipulátorok II. Direkt és inverz kinematika Készült a HEFOP-3.3.1-P.-2004-06-0018/1.0 projekt keretében Tartalom Direkt kinematikai probléma Denavit-Hartenberg konvenció
Számítógép hálózatok, osztott rendszerek 2009
Számítógép hálózatok, osztott rendszerek 2009 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Hétfő 10:00 12:00 óra Gyakorlat: Hétfő 14:00-16:00 óra Honlap: http://people.inf.elte.hu/lukovszki/courses/0910nwmsc
I. VEKTOROK, MÁTRIXOK
217/18 1 félév I VEKTOROK, MÁTRIXOK I1 I2 Vektorok 1 A síkon derékszögű koordinátarendszerben minden v vektornak van vízszintes és van függőleges koordinátája, ezeket sorrendben v 1 és v 2 jelöli A v síkbeli
2. Visszalépéses stratégia
2. Visszalépéses stratégia A visszalépéses keres rendszer olyan KR, amely globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai:
Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.
Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb
Algoritmuselmélet 1. előadás
Algoritmuselmélet 1. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források
MATE-INFO UBB verseny, március 25. MATEMATIKA írásbeli vizsga
BABEŞ-BOLYAI TUDOMÁNYEGYETEM, KOLOZSVÁR MATEMATIKA ÉS INFORMATIKA KAR MATE-INFO UBB verseny, 218. március 25. MATEMATIKA írásbeli vizsga FONTOS TUDNIVALÓK: 1 A feleletválasztós feladatok,,a rész esetén
Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!
függvények RE 1 Relációk Függvények függvények RE 2 Definíció Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor
Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.
Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,
Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei
A Gauss-Jordan elimináció, mátrixinvertálás Gauss-Jordan módszer Ugyanazzal a technikával, mint ahogy a k-adik oszlopban az a kk alatti elemeket kinulláztuk, a fölötte lévő elemeket is zérussá lehet tenni.
Mátrixok 2017 Mátrixok
2017 számtáblázatok" : számok rendezett halmaza, melyben a számok helye két paraméterrel van meghatározva. Például lineáris egyenletrendszer együtthatómátrixa 2 x 1 + 4 x 2 = 8 1 x 1 + 3 x 2 = 1 ( 2 4
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 8. Előadás Bevezetés Egy olyan LP-t, amelyben mindegyik változó egészértékű, tiszta egészértékű
Gauss-Seidel iteráció
Közelítő és szimbolikus számítások 5. gyakorlat Iterációs módszerek: Jacobi és Gauss-Seidel iteráció Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor London András Deák Gábor jegyzetei alapján 1 ITERÁCIÓS
Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
KOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA MATEmATIkA I 6 VI KOmPLEX SZÁmOk 1 A komplex SZÁmOk HALmAZA A komplex számok olyan halmazt alkotnak amelyekben elvégezhető az összeadás és a szorzás azaz két komplex szám összege és szorzata
minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.
Függvények határértéke és folytonossága Egy f: D R R függvényt korlátosnak nevezünk, ha a függvényértékek halmaza korlátos. Ha f(x) f(x 0 ) teljesül minden x D esetén, akkor x 0 -at a függvény maximumhelyének
Gráfalgoritmusok ismétlés ősz
Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf
Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.
11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során
Valasek Gábor valasek@inf.elte.hu
Számítógépes Grafika Valasek Gábor valasek@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2013/2014. őszi félév ( Eötvös LorándSzámítógépes TudományegyetemInformatikai Grafika Kar) 2013/2014.
A lineáris programozás alapjai
A lineáris programozás alapjai A konvex analízis alapjai: konvexitás, konvex kombináció, hipersíkok, félterek, extrém pontok, Poliéderek, a Minkowski-Weyl tétel (a poliéderek reprezentációs tétele) Lineáris
A valós számok halmaza
VA 1 A valós számok halmaza VA 2 A valós számok halmazának axiómarendszere és alapvető tulajdonságai Definíció Az R halmazt a valós számok halmazának nevezzük, ha teljesíti a következő axiómarendszerben
Struktúra nélküli adatszerkezetek
Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A
Párhuzamos és Grid rendszerek
Párhuzamos és Grid rendszerek (2. ea) párhuzamos algoritmusok tervezése Szeberényi Imre BME IIT Az ábrák egy része Ian Foster: Designing and Building Parallel Programs (Addison-Wesley)
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
A szimplex tábla. p. 1
A szimplex tábla Végződtetés: optimalitás és nem korlátos megoldások A szimplex algoritmus lépései A degeneráció fogalma Komplexitás (elméleti és gyakorlati) A szimplex tábla Példák megoldása a szimplex
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 06/7. félév 7. Előadás Dr. Kulcsár Gyula egyetemi docens Tartalom. A projektütemezés alapjai..
Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21
Bonyolultságelmélet Thursday 1 st December, 2016, 22:21 Tárbonyolultság A futásidő mellett a felhasznált tárterület a másik fontos erőforrás. Ismét igaz, hogy egy Ram-program esetében ha csak a használt
Rekurzív algoritmusok
Rekurzív algoritmusok 11. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. november 14. Sergyán (OE NIK) AAO 11 2011. november 14. 1 / 32 Rekurzív
Párhuzamos algoritmusok tervezésének alapjai
Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar Párhuzamos algoritmusok tervezésének alapjai Bevezetés Részfeladatok és dekompozíció Processzek és leképzés
Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás
Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott
3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek
3. Előadás Megyesi László: Lineáris algebra, 47. 50. oldal. Gondolkodnivalók Determinánsok 1. Gondolkodnivaló Determinánselméleti tételek segítségével határozzuk meg a következő n n-es determinánst: 1
Hatékonyság 1. előadás
Hatékonyság 1. előadás Mi a hatékonyság Bevezetés A hatékonyság helye a programkészítés folyamatában: csak HELYES programra Erőforrásigény: a felhasználó és a fejlesztő szempontjából A hatékonyság mérése
Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)
Szimuláció RICHARD M. KARP és AVI WIGDERSON A Fast Parallel Algorithm for the Maximal Independent Set Problem című cikke alapján (Készítette: Domoszlai László) 1. Bevezetés A következőkben megadott algoritmus
Polinomok, Lagrange interpoláció
Közelítő és szimbolikus számítások 8. gyakorlat Polinomok, Lagrange interpoláció Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor Vinkó Tamás London András Deák Gábor jegyzetei alapján 1. Polinomok
Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
Számjegyes vagy radix rendezés
Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben
JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN
JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN Supporting Top-k item exchange recommendations in large online communities Barabás Gábor Nagy Dávid Nemes Tamás Probléma Cserekereskedelem
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Monte Carlo Markov Chain MCMC során egy megfelelően konstruált Markov-lánc segítségével mintákat generálunk. Ezek eloszlása követi a céleloszlást. A
2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1
2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának
Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }
Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson
Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.
Algoritmuselmélet Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem
értékel függvény: rátermettségi függvény (tness function)
Genetikus algoritmusok globális optimalizálás sok lehetséges megoldás közül keressük a legjobbat értékel függvény: rátermettségi függvény (tness function) populáció kiválasztjuk a legrátermettebb egyedeket
Az Országos Középiskolai Tanulmányi Verseny 2006-2007. tanévi első fordulójának feladatmegoldásai
Az Országos Középiskolai Tanulmányi Verseny 006-007. tanévi első fordulójának feladatmegoldásai matematikából, a II. kategória számára 1. Melyek azok a pozitív egészek, amelyeknek pontosan négy pozitív
Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén
Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén Dombi József Szegedi Tudományegyetem Bevezetés - ID3 (Iterative Dichotomiser 3) Az ID algoritmusok egy elemhalmaz felhasználásával
Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.
Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok
BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít
1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje
1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt
Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 9. Előadás Az optimalizálás alapfeladata Keressük f függvény maximumát ahol f : R n R és