Trzy słowa o zadaniu 3 z I kolokwium z ASD 2010/2011 ===================================================== Zadanie było jednym z prostszych zadań z tego kolokwium. Należało: 1. Odwrócić krawędzie wejściowego grafu, by zamiast d(v,s) liczyć d(s,v). 2. Puścić 3xDijkstrę startującą odpowiednio z s, r oraz t. Dijkstry te zapisują wyniki w osobnych tabelach ds, dr, dt. 3. Przejść wszystkie wierzchołki i wypisać tego z minimalnym ds[v] + dr[v] + dt[v]. Oto najczęstsze błędy: A. Niezauważenie, że graf jest skierowany, i brak odwracania krawędzi grafu: zakładanie, że Dijkstra z s policzy d(v,s), a ona liczy d(s,v). B. Użycie nieoptymalnej implementacji Dijkstry, czyli na zwykłym kopcu. Najszybsza jest na kopcach Fibonaciego, dająca czas O(n log n + m). C. Brak analizy złożoności, lub zbycie ją stwierdzeniem "jak Dijkstra". Jak w każdym bardzo prostym zadaniu, niestety za każde potknięcie traci się dość dużo punktów. Ogólny schemat oceniania: 0 pkt za niepoprawne rozwiązanie lub wolniejsze od n-krotna Dijkstra. 0.5 pkt za rozwiązanie robiące n-krotnie Dijkstrę (z każdego wierzchołka puszczamy Dijkstrę), używające kopców Fibonaciego 3 pkt za rozwiązanie wzorcowe, ale nie odwracające krawędzi grafu 5 pkt za rozwiązanie wzorcowe Najczęstsze minusy: -1 pkt za nieużycie kopców Fibonaciego w Dijkstrze -1 pkt za stwierdzenie "złożoność jak u Dijkstry", bez powiedzenia, co to jest za złożoność -1.5 pkt za brak analizy złożoności czasowej -2 pkt za twierdzenie, że Dijkstra działa w czasie liniowym