zestaw nr 2
Transkrypt
zestaw nr 2
1 Algorytmy optymalizacji dyskretnej – Paweł Zieliński Algorytmy optymalizacji dyskretnej – laboratorium zad. 0 Przeczytać artykuł: A Theoretician’s Guide to the Experimental Analysis of Algorithms, D. S. Johnson. in Data Structures, Near Neighbor Searches, and Methodology: Fifth and Sixth DIMACS Implementation Challenges, M. H. Goldwasser, D. S. Johnson, and C. C. McGeoch, Editors, American Mathematical Society, Providence, 2002, 215-250, http://davidsjohnson.net/papers/experguide.pdf zad. 1 Zaimplementować w języku C algorytm Dijkstry dla problemu najkrótszych ścieżek z jednym źródłem w sieci G = (N, A) z nieujemnymi kosztami (tj. najkrótszych ścieżek między źródłem s ∈ N i wszystkimi wierzchołkami i ∈ N \ {s}) - wersja podstawowa. zad. 2 Zaimplementować w języku C algorytm Dial dla problemu najkrótszych ścieżek z jednym źródłem w sieci G = (N, A) z nieujemnymi kosztami (tj. najkrótszych ścieżek między źródłem s ∈ N i wszystkimi wierzchołkami i ∈ N \ {s}). zad. 3 Zaimplementować w języku C algorytm Radix Heap dla problemu najkrótszych ścieżek z jednym źródłem w sieci G = (N, A) z nieujemnymi kosztami (tj. najkrótszych ścieżek między źródłem s ∈ N i wszystkimi wierzchołkami i ∈ N \ {s} - wersja podstawowa O(m + n log nC) lub wersja O(m + n log C). Wymagania dotyczące kompilacji i uruchamiania programów: • Programy powininny kompilować i linkować się za pomocą polecenia make. Zatem napisać odpowiedni Makefile. • Programy powinny pozwalać na uruchomienie ich z linii poleceń z parametrami, np. dla algorytmu Dijkstry dijkstra -d plik_z_danymi.gr -ss zrodla.ss -oss wyniki.ss.res opcja -d oznacza dane, natomiast plik_z_danymi.gr jest plikiem, w którym zadana jest sieć z kosztami, jego postać jest następująca: c c c p c c c a c c a a a a a a a Linia zaczynajaca sie od c jest komentarzem Przyklad sieci z kosztami plik plik_z_danymi.gr sp 6 8 p (problem) sp (shortest path) siec zawiera 6 wierzcholkow i 8 lukow wierzcholki ponumerowane sa od 1 do 6 1 2 17 luk z wierzcholka 1 do wierzcholka 2 o koszcie 17 1 2 3 4 4 5 5 3 4 5 3 6 2 6 10 2 0 0 3 0 20 opcja -ss oznacza, że należy policzyć najkrótsze ścieżki między źródłem s ∈ N i wszystkimi wierzchołkami i ∈ N \ {s}, źródła zadane są w pliku zrodla.ss, którego postać jest następująca: 2 Algorytmy optymalizacji dyskretnej – Paweł Zieliński c c c p c c c c c s s s Przyklad pliku zrodla.ss, w ktorym zadane sa zrodla aux sp ss 3 podane sa 3 zrodla w nastepujacych liniach algorytm powinien policzyc nakrotsze sciezki miedzy zrodlem 1 i wszystkimi wierzcholkami sieci zadanej w pliku plik_z_danymi.gr, nastepnie miedzy zrodlem 3 i wszystkimi... 1 3 5 opcja -oss wyniki.ss.res specyfikuje plik wynikowy dla problemu najkrótszych ścieżek z jednym źródłem, którego postać jest następująca: c c p c c c f c c g c c c t Przyklad pliku wynikowego wyniki.ss.res dla problemu najkrotszych sciezek z jednym źródłem res sp ss dikstry ---------------------------------------------------------------wyniki testu dla sieci zadanej w pliku plik_z_danymi.gr zrodla.ss plik_z_danymi.gr i zrodel zrodla.ss: graf zawiera 1024 wierzcholkow, 4096 lukow, z kosztami nalezacymi do 1024 4094 0 1024 [0,1024]: sredni czas wyliczenia najkrotszych sciezek miedzy zrodlem a wszystkimi wierzcholkami wynosi 12.71 msec: 12.71 dijkstra -d plik_z_danymi.gr -p2p pary.p2p -op2p wyniki.p2p.res opcja -d jak wyżej, opcja -p2p oznacza, że należy policzyć najkrótszą ścieżkę między parą wierzołków s ∈ N i t ∈ N , pary wierzchołków zadane są w pliku pary.p2p, którego postać jest następująca: c c c p c c q q q Przyklad pliku pary.p2p (point-to-point), w ktorym zadane sa pary wierzchołkow miedzy, ktorymi nalezy policzyc najkrotsze sciezki aux sp p2p 3 podane sa 3 pary (1, 5), (5, 1) i (1, 2) 1 5 5 1 1 2 opcja -op2p wyniki.p2p.res specyfikuje plik wynikowy dla problemu najkrótszej ścieżki między parą wierzchołków, którego postać jest następująca: c c c f Przyklad pliku wynikowego wyniki.p2p.res dla problemu najkrotszej sciezki miedzy para wierzcholkow wyniki testu dla sieci zadanej w pliku plik_z_danymi.gr i par pary.p2p: plik_z_danymi.gr pary.p2p 3 Algorytmy optymalizacji dyskretnej – Paweł Zieliński c c g c c d d d siec ma 2048 wierzcholkow, 8192 lukow, koszty naleza do przedzialu [0,1024]: 2048 8192 0 1024 dlugosci najkrotszych sciezek, np. miedzy para (1,5) dlugosc sciezki wynosi 4351: 1 5 4351 5 1 7541 1 2 231 • Podobnie dla algorytmr Dial: dial -d plik_z_danymi.gr -ss zrodla.ss dial -d plik_z_danymi.gr -p2p pary.p2p -oss wyniki.ss.res -op2p wyniki.p2p.res • Podobnie dla algorytmr Radix Heap: radixheap -d plik_z_danymi.gr -ss zrodla.ss radixheap -d plik_z_danymi.gr -p2p pary.p2p -oss wyniki.ss.res -op2p wyniki.p2p.res Dane testowe należy pobrać ze strony: http://www.dis.uniroma1.it/challenge9/download.shtml Proponuje pobrać źrodła programów do pobierania i generowania danych testowych: Challenge 9 benchmarks. Następnie rozpakować, skompilować za pomocą make i wygenerować dane testowe za pomocą make gen (szczegóły w pliku README.txt). Dane testowe znajdą się w kartotece .../inputs. Formaty plików z danymi opisane są powyżej (szczegóły File formats). Wyniki eksperymentów przedstawić w sprawozdaniu, plik pdf + wydruk, które powinno zawierać: 1. opis algorytmów - opis implementacji z analizą złożoności, 2. wyniki eksperymentów porównujących zaimplementowane algorytmy dla danych testowych (tabele, wykresy) oraz ich interpretację - patrz zad. 0, 3. wnioski. Do sprawozdania należy dołączyć pliki z kodem (*.c), Makefile. Pliki powinny być skomentowane: imię i nazwisko autora (anonimy nie będą sprawdzane), komentarze zmiennych, Spakowane pliki wraz ze sprawozdaniem (*.zip) należy przesłać e-mailem prowadzącemu. Natomiast wydruk sprawozdania należy oddać prowadzącemu na laboratorium. Uwaga: Ostateczną wersję proszę programów przekompilować i przetestować pod linuksem. Użyteczne linki • 9th DIMACS Implementation Challenge - Shortest Paths • Shortest paths: label setting algorithms • The radix heap algorithm