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

Podobne dokumenty