AskisiC(3)

2
Άσκηση C Σε ένα πλήρες γράφημα με N κορυφές η κάθε κορυφή του συνδέεται με όλες τις άλλες με ακμές η κάθε μια από τις οποίες έχει ένα ορισμένο βάρος. Στο γράφημα αυτό ζητείται να βρεθεί η διαδρομή η οποία περνά, μια φορά, από όλες τις κορυφές του γραφήματος και το άθροισμα των βαρών των ακμών από τις οποίες περνά να είναι ελάχιστο (Πρόβλημα του περιοδεύοντας εμπόρου). Για να βρεθεί μια τέτοια διαδρομή που να δίνει μια καλή λύση (όχι τη βέλτιστη) ακολουθείται ο εξής αλγόριθμος. Επιλέγεται μια κορυφή ως αρχική κορυφή εκκίνησης. Ως επόμενη κορυφή επιλέγεται αυτή που συνδέεται με την κορυφή εκκίνησης με το μικρότερο βάρος. Η κορυφή εκκίνησης διαγράφεται από το γράφημα και η διαδικασία επαναλαμβάνεται θέτοντας ως κορυφή εκκίνησης την επόμενη κορυφή. Η διαδικασία συνεχίζεται μέχρι να καλυφθούν όλες οι κορυφές του γραφήματος. Επειδή με την πιο πάνω διαδικασία η επιλογή της αρχικής κορυφής εκκίνησης επηρεάζει το τελικό αποτέλεσμα η διαδικασία εφαρμόζεται διαδοχικά χρησιμοποιώντας μια προς μία όλες τις κορυφές του γραφήματος ως αρχικές κορυφές εκκίνησης. Να γραφεί το πρόγραμμα που υλοποιεί τον πιο πάνω αλγόριθμό. Βοηθητικές παρατηρήσεις Για την καταχώρηση των βαρών των ακμών του γραφήματος να ορίσετε τον πίνακας dis τύπου ΝxΝ ο οποίος, ως τιμή για το στοιχείο dis[i][j], να έχει το βάρος της ακμής που συνδέει την κορυφή i με την κορυφή j. Παράδειγμα dis 1 4 2 2 1 2 5 3 4 2 3 4 2 5 3 6 2 3 4 6 Διαδρο μή 4 0 1 2 3 Βάρος 8

description

AskisiC(3)

Transcript of AskisiC(3)

C N . , , ( ).

( ) . . . . . .

.

dis x , dis[i][j], i j.

dis

1422

1253

4234

2536

2346

40123

8

40123

8

2

3

6

2

5

4

2

3

4

1

4

3

2

1

0