Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar Kereső algoritmusok a diszkrét optimalizálás problémájához A diszkrét optimalizálási probléma Soros megoldás Párhuzamos megoldási lehetőségek és problémák 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 pontosabb tárgyalása Futó Iván (szerk.): Mesterséges Intelligencia, Aula, 1999. fejezetéből származnak miklos.arpad@nik.uni-obuda.hu
Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. miklos.arpad@nik.uni-obuda.hu 2
Diszkrét optimalizálás A diszkrét optimalizálási problémák komoly számítási igényűek. Jelentős elmélettel és gyakorlati fontossággal rendelkeznek (ütemezési feladatok, pályatervezés, digitális áramkörökhöz tesztpéldák generálása, logisztikai feladatok, stb.). A kereső algoritmusok a feltételeknek megfelelő megoldások terét szisztematikusan vizsgálják. miklos.arpad@nik.uni-obuda.hu 3
Definíció A diszkrét optimalizációs probléma (DOP) a következő módon fejezhető ki: (S, f). S bizonyos feltételeknek eleget tévő megoldások véges, vagy megszámlálhatóan végtelen halmaza, f költségfüggvény S minden eleméhez valós R értéket rendel. A DOP megoldása olyan x opt megoldás keresése, hogy f(x opt ) f(x) minden x S esetén. Gyakran NP-teljes probléma. miklos.arpad@nik.uni-obuda.hu 4
Diszkrét optimalizáció: példa Egyértékű lineáris programozási feladat (0/1 integer-linearprogramming problem): adott A m n mátrix, b m 1 vektor és c n 1 vektor. A cél egy olyan x n 1 vektor meghatározása, amelynek elemei csak 0 és 1 értékekből állhatnak, a vektor teljesíti a következő feltételt: Ax b és az f függvénynek minimuma kell legyen: f(x) = c T x *: Duális megfogalmazás miklos.arpad@nik.uni-obuda.hu 5
DOP és a gráfkeresés Az S lehetséges elemeinek száma nagyon nagy. A DOP gyakran úgy is megfogalmazható, hogy egy gráfban minimum költségű utat keressünk egy kezdőponttól egy vagy több lehetséges cél csomópontig. Az S minden x elemét tekinthetjük egy útnak a kezdőponttól valamely célig. A gráf csomópontjai állapotok Az állapotok vagy végpontok, vagy nem végpontok Bizonyos állapotok lehetséges megoldáshoz tartoznak, mások nem Az élekhez költségek tartoznak, amelyek az egyik állapotból a másikba történő átmenet ráfordításai. A gráfot állapottérnek nevezzük. miklos.arpad@nik.uni-obuda.hu 6
Állapottér gráf: példa Egyértékű lineáris programozási feladat 5 2 1 2 8 2 A = 1-1 -1 2 b = 2 c = 1 3 1 1 3 5-1 -2 Az A, b és c értékeihez kapcsolódó feltételek: 5x 1 + 2x 2 + x 3 + 2x 4 8 x 1 - x 2 - x 3 + 2x 4 2 3x 1 + x 2 + x 3 + 3x 4 5 A minimalizálandó f függvény pedig: f(x) = 2x 1 + x 2 - x 3-2x 4 miklos.arpad@nik.uni-obuda.hu 7
Állapottér gráf: példa Az állapotok az x vektor egyes koordinátáihoz rendelt lehetséges értékek (0 vagy 1) => faként reprezentálható A problémának megfelelő gráf X 1 = 0 X 1 = 1 X 2 = 0 X 2 = 1 Végpont (nem cél) Nem végpont (cél) Végpont (cél) X 3 = 0 X 3 = 1 X 3 = 0 X 3 = 1 X 4 = 0 X 4 = 1 X 4 = 0 X 4 = 1 f(x) = 0 f(x) = 2 miklos.arpad@nik.uni-obuda.hu 8
Lineáris programozás a) A és B textília jellegű termékeket azonos alapanyagból gyártjuk. Ebből A-hoz 2 m, B-hez 5 m szükséges minden egyes méter késztermék előállításához, és amelyből hetente legfeljebb 3.000 méter áll rendelkezésünkre. b) Egységnyi termelési költségek A-ra 20 Ft/m és B-re 30Ft/m, amelyek heti összegzett költsége nem haladhatja meg a 18.000 Ft-ot. c) A gyártáshoz felhasználunk bizonyos segédanyagot, amelyből A-hoz 1 m-t, B-hez 1/2 m-t használunk fel. A felhasznált segédanyagok heti mennyisége nem haladhatja meg a 700 m-t. d) Előzetes felmérés szerint A-ból hetente legalább 100 m-re van szükség. e) A rendelkezésre álló gépparkkal a B-ből hetente legfeljebb 400 m gyártható. f) A termelés nyeresége termékegységre vetítve A terméken 2 Ft, B-n 6 Ft. Termékek ------------------ Korlátozások A (méter) B (méter) Erőforrások Relációk a) alapanyag b) term.klts. c) segédanyag d) termelendő e) termelendő 2 m/m 20 Ft/m 1 m/m X 1 ----- 5 m/m 30 Ft/m ½ m/m ---- X 2 3.000 m 18.000 Ft 700 m 100 m/hét 400 m/hét f) nyereségek 2 Ft/m 6 Ft/m Max.
A feltételek matematikai megfogalmazása: max 0 0; 6 2 ) ( 400 ) ( 100 ) ( 700 2 1 ) ( 18000 30 20 ) ( 3000 5 2 ) ( 2 1 2 1 2 1 2 1 2 1 2 1 z x x z x x f x e x d x x c x x b x x a x 1 x 2 (d) (e) (c) (b) (a) Lineáris programozás
8-as kirakó (tili-toli) Egy kezdeti állapotból találjuk meg azt a legrövidebb lépéssorozatot, amely a célkonfigurációba vezet. Állapottér: gráf 8 3 2 6 4 1 7 5 1 6 4 7 5 6 4 1 7 5 6 4 1 7 5 8 3 2 3 2 6 4 6 8 4 6 4 6 7 4 1 7 5 1 7 5 1 7 5 1 5 8 3 2 1 4 8 3 2 1 4 1 6 4 7 5 1 4 2 3 1 4 1 8 4 1 4 7 1 4 6 5 7 1 4 6 5 2 3 1 8 4 1 2 3 8 4 2 3 1 8 4 2 3 4 1 8 2 8 1 4 3 2 8 1 4 3 1 4 5 7 6 1 4 5 7 6 1 6 4 7 5 1 6 7 5 4 2 8 1 6 1 6 3 7 5 4 7 5 4 2 3 1 6 1 6 8 7 5 4 7 5 4 1 5 6 7 4 2 3 1 6 3 7 5 4 8 3 8 1 3 1 2 3 1 2 3 2 1 4 2 4 8 4 7 8 4 6 5 1 4 5 1 5 7 6 7 4 6 1 5 6 7 4 1 5 6 7 4 8 1 3 8 1 3 8 1 3 2 4 2 4 2 6 4 7 5 1 5 7 4 6 2 3 1 8 5 7 4 6 1 5 7 4 6 1 5 7 4 6 1 3 8 1 3 8 2 4 7 2 4 6 5 célpont célállapot duplikált állapot duplikált állapot 1 3 8 2 4 1 3 1 2 3 8 2 4 8 4 miklos.arpad@nik.uni-obuda.hu 11
Kereső algoritmusok tere A keresési tér gráf vagy fa? A gráf fává történő kiterítése gyakran nagyméretű feladathoz vezet. Első példa. miklos.arpad@nik.uni-obuda.hu 12
Kereső algoritmusok tere A gráf fává történő kiterítése gyakran nagyméretű feladathoz vezet. Második példa. miklos.arpad@nik.uni-obuda.hu 13
Kereső stratégiák I. Nem módosítható keresés Nincs visszalépés. Pl. hegymászó algoritmus (gradiens keresés). Visszalépéses keresés Törli a zsákutcát. Ha körre futunk, akkor visszalépés. Mélységi korlátot használhatunk (heurisztika). Azonos szinten célszerű sorrendi heurisztikát használni. Kis memória igényű. Nem garantálja az optimális megoldást (csak növekvő mélységi korláttal és iterálva). miklos.arpad@nik.uni-obuda.hu 14
Négy-királynő probléma Visszalépéses keresés + azonos sorban haladva, mindig balról jobbra helyezzük el a királynőket. Feketével jelöltük a már lerakott királynőket, fehérrel pedig azokat a helyeket ahová szabad elhelyezni királynőt a következő lépésben. miklos.arpad@nik.uni-obuda.hu 15
Kereső stratégiák II. Nem informált gráfkeresés Nem informált gráfkeresések a gráf kiértékelő függvényben (f(n) = g(n) + h(n)) beépülő heurisztikát nem használunk. Csúcsok NYÍLT és ZÁRT listája. Mélységi keresés (Depth-First Search: DFS) Egységnyi élköltséget tekintünk. f(n):= -g(n) minden n NYÍLT csúcsra. Mélységi korlát használható, iterációs változatban is. Fa állapottérnél előnyös. Szélességi keresés Egységnyi élköltséget tekintünk. f(n):= g(n) minden n NYÍLT csúcsra. miklos.arpad@nik.uni-obuda.hu 16
Iteratív mélységi keresés Gyakran a megoldás a gyökérhez közeli, de másik ágon van. Az egyszerű mélységi keresés nagy részt dolgozna fel mielőtt erre az ágra jut. Iteratív módon növeljük a mélységi határt, ameddig keresünk. Ha nem találunk megoldást, akkor a határt növeljük és ismételjük a folyamatot. miklos.arpad@nik.uni-obuda.hu 17
Mélységi keresés: tárolási követelmény és adatstruktúra A mélységi keresés minden lépésénél a még ki nem próbált alternatívákat el kell tárolni. Ha m egy állapot tárolásához szükséges adatterület, és d a maximális mélység, akkor a mélységi kereséshez szükséges teljes tér O(md) nagyságrendű. Ha a keresendő állapottér fa, akkor a mélységi keresést veremmel hatékonyan lehet reprezentálni. A verem memória szükséglete egyenesen arányos a fa mélységével. miklos.arpad@nik.uni-obuda.hu 18
Mélységi keresés: tárolási követelmény és adatstruktúra Stack alja Aktuális állapot a, Stack teteje a, b, (a) Mélységi keresés fa esetén; pontozottan jelennek meg a már felkeresett csúcsok; A verem a még ki nem próbált alternatívákat tárolja csak (a); a verem a ki nem próbált alternatívákat és szüleiket (szürkített) tárolja (b). miklos.arpad@nik.uni-obuda.hu 19
Mélységi keresés korláttal: példa Korlát: 5 1. 1 6 4 7 5 2. 1 6 4 7 5 19. 1 4 1 6 4 7 5 3. 6 4 1 7 5 20. 29. 2 3 1 4 1 8 4 1 4 4. 8 3 2 6 4 1 7 5 8. 6 4 1 7 5 21. 8 3 2 1 4 25. 7 1 4 6 5 30. 2 3 1 8 4 2 3 1 8 4 5. 8 3 9. 2 3 13. 16. 2 6 4 6 8 4 6 4 6 7 4 1 7 5 1 7 5 1 7 5 1 5 22. 8 3 2 1 4 26. 7 1 4 6 5 31. 1 2 3 8 4 6. 7. 10. 11. 8 3 8 6 3 2 3 2 3 2 6 4 2 4 6 8 4 6 8 4 1 7 5 1 7 5 1 7 5 1 7 5 14. 15. 2 8 6 4 3 6 4 5 1 7 5 1 7 17. 18. 6 7 4 6 7 4 1 5 1 5 23. 24. 27. 28. 32. 8 3 8 1 3 1 2 3 1 2 3 2 1 4 2 4 7 4 7 1 4 8 4 7 8 4 6 1 5 6 5 6 5 miklos.arpad@nik.uni-obuda.hu 20
Szélességi keresés: példa 1. 1 6 4 7 5 2. 3. 4. 1 6 4 1 4 7 5 1 6 4 7 5 5. 6. 7. 2 3 8. 9. 6 4 1 4 1 8 4 1 4 1 7 5 1 6 7 5 4 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 8 3 8 3 2 3 2 3 2 8 2 8 2 6 4 6 4 2 1 4 7 1 4 1 8 4 1 8 4 1 4 3 1 4 5 1 6 1 6 3 1 7 5 1 7 5 6 5 7 6 7 5 4 7 5 4 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 8 3 2 3 8 3 1 2 3 2 3 4 2 8 2 3 2 3 2 6 4 6 8 4 6 4 6 7 4 2 1 4 7 1 4 8 4 1 8 1 4 3 1 4 5 1 6 1 6 8 1 5 6 1 6 3 1 7 5 1 7 5 1 7 5 1 5 6 5 7 6 7 5 4 7 5 4 7 4 7 5 4 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 8 3 8 6 3 2 3 2 3 2 8 8 3 8 1 3 1 2 3 2 6 4 2 4 6 8 4 6 8 4 6 4 3 6 4 5 6 7 4 6 7 4 2 1 4 2 4 7 4 7 1 4 8 4 1 7 5 1 7 5 1 7 5 1 7 5 1 7 5 1 7 1 5 1 5 6 1 5 6 5 miklos.arpad@nik.uni-obuda.hu 21
Heurisztikus gráfkereső stratégiák Az f(x) kiértékelő függvénybe valamilyen heurisztikát építünk be (f(x) = g(x) + h(x)). Gyakran például becsülhető a cél elérésének költsége az aktuális csúcsból. A becslést heurisztikus becslésnek nevezik. Ha a becslés garantáltan alábecsül, akkor megengedő heurisztikáról beszélünk. Elképzelés: ha heurisztikát használunk, akkor a rossz, vagy nem sokat ígérő utakra nem költünk. miklos.arpad@nik.uni-obuda.hu 22
Diszkrét optimizálás példához heurisztika A 8-as kirakóhoz (megengedő) heurisztika W(n) (n NYÍLT), ahol W a rossz helyek száma A 8-as kirakóhoz megengedő heurisztika A rács minden pontja a koordinátáival azonosítható. Az (i, j) és a (k, l) pozíciók távolsága: i - k + j - l. Ez a Manhattan távolság. A kezdeti és cél pozíciók közötti Manhattan távolságok összege (P-vel fogjuk jelölni) megengedő heurisztika. miklos.arpad@nik.uni-obuda.hu 23
Kereső stratégiák III. Heurisztikus gráfkereső stratégiák Előretekintő keresés A* f(n) = h(n) minden n NYÍLT csúcsra. Kiértékelő fgv. f(n) = g(n) + h(n) minden n NYÍLT csúcsra, ahol h(n) megengedő heurisztika. Garantálja az optimális megoldást. Nagy a memória igény. Meglátogatott csúcsokkal (állapotokkal) arányos. Mind fák, mind gráfok estében hatékony. miklos.arpad@nik.uni-obuda.hu 24
Előretekintő keresés f = W W hibásak száma, hátralévő mozgások alsó becslését adja. 1 6 4 7 5 1. 1 6 4 7 5 5 2. 3 5 1 4 1 6 4 7 5 3. 3 2 3 3 4 1 4 1 8 4 1 4 4 4. 8 3 2 1 4 3 7 1 4 6 5 4 5. 8 3 2 1 4 3 8 3 4 6. 8 1 3 2 1 4 2 4 3 7. 8 1 3 3 8 1 3 4 8 1 3 4 2 4 2 4 2 6 4 7 5 8. 1 3 2 8 1 3 4 8 2 4 7 2 4 6 5 9. 1 3 8 2 4 1 1 3 2 10. 1 2 3 8 2 4 8 4 0 miklos.arpad@nik.uni-obuda.hu 25
A* példa P heurisztikával 1. 1 6 4 7 5 4 1 6 4 7 5 5 2. 3 5 1 4 1 6 4 7 5 3 3. 2 3 3 1 4 1 8 4 1 4 4 4. 2 3 1 8 4 2 2 3 1 8 4 4 5. 1 2 3 8 4 1 6. 1 2 3 0 1 2 3 2 8 4 7 8 4 6 5 miklos.arpad@nik.uni-obuda.hu 26
Párhuzamos diszkrét optimalizáció: motiváció DOP általában NP-teljes probléma. Segít-e a párhuzamosítás? Sok problémánál az átlagos eset polinomiális idejű. Sokszor viszonylag kis állapotterünk van, de valós idejű megoldásra van szükségünk. Többletráfordítás A soros és párhuzamos keresés közötti munkamennyiség gyakran különböző. Ha W a soros munka és W P a párhuzamos, a többletráfordítás s = W P /W. A sebességnövekedés határa p (W/W P ). miklos.arpad@nik.uni-obuda.hu 27
Párhuzamos mélységi keresés A keresési teret miként osszuk fel processzorok között? A különböző ágakat lehet párhuzamosan keresni. De az ágak nagyon eltérő méretűek lehetnek. Nehéz becsülni az ágak méretét a gyökerükből. Dinamikus terhelés kiegyenlítés szükséges. miklos.arpad@nik.uni-obuda.hu 28
Párhuzamos mélységi keresés A statikus dekompozíció strukturálatlan fakeresést és nem kiegyensúlyozott terheléshez vezet. miklos.arpad@nik.uni-obuda.hu 29
Párhuzamos mélységi keresés: dinamikus terhelés kiegyenlítés Amikor egy processzor befejezi munkáját, akkor egy másiktól kér. Osztott memóriás modellnél ez lockolással és a munka szétvágásával történik (lásd később). Ha valamely processzor megoldáshoz ér, akkor a többi terminál. Az eddig fel nem dolgozott részeket saját veremben tárolhatja minden processzor. Kezdetben az egész teret egy processzorhoz rendeljük. miklos.arpad@nik.uni-obuda.hu 30
Párhuzamos mélységi keresés: dinamikus terhelés kiegyensúlyozás (load balancing) Várakozó üzenetek kiszolgálása Befejezte az elérhető számításokat Processzor kiválasztása és számítási igény Kérés Meghatározott mennyiségű számítás Processzor aktív Processzor inaktív Számítás Várakozó üzenetek kiszolgálása Megszakítás miklos.arpad@nik.uni-obuda.hu 31
Párhuzamos mélységi keresés: munkafelosztás Mélységi felosztás Aktuális állapot Mélységi keresés: a két részfa a verem reprezentációval. miklos.arpad@nik.uni-obuda.hu 32
Terhelés kiegyenlítés A munka kiosztásának sémája: Aszinkron (lokális) körbeforgó: minden processzor egy számlálót tart karban ((target +1) mod p ) és az igényét a felé közvetíti. Nagyszámú munkaigényt generál. Globális körbeforgó: A rendszer tart karban egy számlálót és az igények körbeforgó módon kerülnek kezelésre. Legkevesebb munkaigényt generálja. Véletlen ciklikus: Véletlenszerűen kerül kiválasztásra egy processzor. Megfelelő kompromisszum. miklos.arpad@nik.uni-obuda.hu 33
Sebesség anomáliák párhuzamos keresésnél Soros mélységi keresés Kezdő csúcs S Párhuzamos mélységi keresés Kezdő csúcs S Cél csúcs G Cél csúcs G A soros mélységi keresés 13 csúcsot generált, míg a párhuzamos mélységi keresés 2 processzorral (R és L) csak 9 csúcsot A párhuzamos mélységi keresés kevesebb csomópontot jár be, mint a soros. miklos.arpad@nik.uni-obuda.hu 34
Sebesség anomáliák párhuzamos keresésnél Kezdő csúcs S Kezdő csúcs S Cél csúcs G Cél csúcs G A soros mélységi keresés 7csúcsot generált, míg a párhuzamos mélységi keresés 12 csúcsot A párhuzamos mélységi keresés több csomópontot jár be, mint a soros. miklos.arpad@nik.uni-obuda.hu 35
Felhasznált és javasolt irodalom [1] A. Grama, A. Gupta, G. Karypis, V. Kumar Introduction to Parallel Computing Addison-Wesley, ISBN 0-201-64865-2, 2003, 2nd ed., angol, 636 o. [2] B. Wilkinson, M. Allen Parallel Programming Prentice Hall, ISBN 978-0131405639, 2004, 2nd ed., angol, 496 o. [3] S. Akhter, J. Roberts Multi-Core Programming (Increasing Performance through Software Multi-threading) Intel Press, ISBN 0-9764832-4-6, 2006, angol, 340 o. [4] Iványi A. Párhuzamos algoritmusok ELTE Eötvös Kiadó, ISBN 963-463-590-3, Budapest, 2003, magyar, 334 o. [5] J. Albahari Threading in C# [online: 2011. 04. 30.] http://www.albahari.com/threading/ miklos.arpad@nik.uni-obuda.hu 36
miklos.arpad@nik.uni-obuda.hu
miklos.arpad@nik.uni-obuda.hu