Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Aλγόριθμος Floyd Βρίσκει τα μήκη των συντομότερων μονοπατιών για κάθε ζεύγος κορυφών ενός προσανατολισμένου γραφήματος με βάρη. Βασική Ιδέα του Αλγόριθμου.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Aλγόριθμος Floyd Βρίσκει τα μήκη των συντομότερων μονοπατιών για κάθε ζεύγος κορυφών ενός προσανατολισμένου γραφήματος με βάρη. Βασική Ιδέα του Αλγόριθμου."— Μεταγράφημα παρουσίασης:

1 Aλγόριθμος Floyd Βρίσκει τα μήκη των συντομότερων μονοπατιών για κάθε ζεύγος κορυφών ενός προσανατολισμένου γραφήματος με βάρη. Βασική Ιδέα του Αλγόριθμου Αν κ είναι μια κορυφή του συντομότερου μονοπατιού από την κορυφή i στην κορυφή j, τότε τα μέρη του μονοπατιού από την κορυφή i στην κορυφή κ και από την κορυφή κ στην κορυφή j πρέπει να είναι συντομότερα. Σε κάθε επανάληψη του αλγόριθμου Kruskal, επιλέγουμε την ακμή με το μικρότερο βάρος (εφόσον δεν την έχουμε διαλέξει στα προηγούμενα βήματα). Ενώ προσέχουμε να μη σχηματίζεται κύκλος, δεν μας ενδιαφέρει η συνδεσιμότητα της με τις προηγούμενα επιλεχθείσες ακμές. Αυτό έχει ως αποτέλεσμα να δημιουργείται ένα δάσος από δέντρα που αναπτύσσεται κατά κάποιον τρόπο τυχαία. Στον αλγόριθμο Prim, από την άλλη πλευρά, το ελάχιστο δέντρο κάλυμμα ενός γραφήματος αναπτύσσεται πιο «φυσικά», ξεκινώντας μία, αυθαίρετα επιλεγμένη, κορυφή. Σε κάθε επανάληψη, προσθέτουμε ένα νέο κλάδο στο ήδη κατασκευασμένο δέντρο και ο αλγόριθμος σταματάει όταν όλες οι κορυφές του γραφήματος ανήκουν στο δέντρο. k i j

2 Aλγόριθμος Floyd Κατασκευάζει έναν πίνακα D που δίνει τα μήκη των συντομότερων μονοπατιών για κάθε ζεύγος κορυφών. Αρχικοποιεί τον D με τον πίνακα γειτνιάσεως του γραφήματος. Κάνει n επαναλήψεις. Μετά την επανάληψη κ, ο D δίνει τα μήκη των συντομότερων μονοπατιών που χρησιμοποιούν μόνο τις κορυφές από το σύνολο {1, 2, …κ} ως ενδιάμεσες. Σε κάθε επανάληψη του αλγόριθμου Kruskal, επιλέγουμε την ακμή με το μικρότερο βάρος (εφόσον δεν την έχουμε διαλέξει στα προηγούμενα βήματα). Ενώ προσέχουμε να μη σχηματίζεται κύκλος, δεν μας ενδιαφέρει η συνδεσιμότητα της με τις προηγούμενα επιλεχθείσες ακμές. Αυτό έχει ως αποτέλεσμα να δημιουργείται ένα δάσος από δέντρα που αναπτύσσεται κατά κάποιον τρόπο τυχαία. Στον αλγόριθμο Prim, από την άλλη πλευρά, το ελάχιστο δέντρο κάλυμμα ενός γραφήματος αναπτύσσεται πιο «φυσικά», ξεκινώντας μία, αυθαίρετα επιλεγμένη, κορυφή. Σε κάθε επανάληψη, προσθέτουμε ένα νέο κλάδο στο ήδη κατασκευασμένο δέντρο και ο αλγόριθμος σταματάει όταν όλες οι κορυφές του γραφήματος ανήκουν στο δέντρο.

3 Aλγόριθμος Floyd Στην επανάληψη κ, ο αλγόριθμος ελέγχει για κάθε ζεύγος κορυφών (i, j) αν υπάρχει ή όχι ένα μονοπάτι που περνάει από την κορυφή κ και είναι συντομότερο από το τρέχων. Ο έλεγχος αυτός πραγματοποιείται με τη σχέση: Dk[i, j] = min {Dk-1[i, j], Dk-1[i, k]+ Dk-1[k, j]} Σε κάθε επανάληψη του αλγόριθμου Kruskal, επιλέγουμε την ακμή με το μικρότερο βάρος (εφόσον δεν την έχουμε διαλέξει στα προηγούμενα βήματα). Ενώ προσέχουμε να μη σχηματίζεται κύκλος, δεν μας ενδιαφέρει η συνδεσιμότητα της με τις προηγούμενα επιλεχθείσες ακμές. Αυτό έχει ως αποτέλεσμα να δημιουργείται ένα δάσος από δέντρα που αναπτύσσεται κατά κάποιον τρόπο τυχαία. Στον αλγόριθμο Prim, από την άλλη πλευρά, το ελάχιστο δέντρο κάλυμμα ενός γραφήματος αναπτύσσεται πιο «φυσικά», ξεκινώντας μία, αυθαίρετα επιλεγμένη, κορυφή. Σε κάθε επανάληψη, προσθέτουμε ένα νέο κλάδο στο ήδη κατασκευασμένο δέντρο και ο αλγόριθμος σταματάει όταν όλες οι κορυφές του γραφήματος ανήκουν στο δέντρο.

4 Aλγόριθμος Floyd D = A for k =1 to n do for i = 1 to n do
for j = 1 to n do D[i, j] = min {D[i, j], D[i, k]+ D[k, j]} Σε κάθε επανάληψη του αλγόριθμου Kruskal, επιλέγουμε την ακμή με το μικρότερο βάρος (εφόσον δεν την έχουμε διαλέξει στα προηγούμενα βήματα). Ενώ προσέχουμε να μη σχηματίζεται κύκλος, δεν μας ενδιαφέρει η συνδεσιμότητα της με τις προηγούμενα επιλεχθείσες ακμές. Αυτό έχει ως αποτέλεσμα να δημιουργείται ένα δάσος από δέντρα που αναπτύσσεται κατά κάποιον τρόπο τυχαία. Στον αλγόριθμο Prim, από την άλλη πλευρά, το ελάχιστο δέντρο κάλυμμα ενός γραφήματος αναπτύσσεται πιο «φυσικά», ξεκινώντας μία, αυθαίρετα επιλεγμένη, κορυφή. Σε κάθε επανάληψη, προσθέτουμε ένα νέο κλάδο στο ήδη κατασκευασμένο δέντρο και ο αλγόριθμος σταματάει όταν όλες οι κορυφές του γραφήματος ανήκουν στο δέντρο.

5 Aλγόριθμος Floyd Ακολουθεί επίδειξη του αλγόριθμου με το AnimGraph.
Σε κάθε επανάληψη του αλγόριθμου Kruskal, επιλέγουμε την ακμή με το μικρότερο βάρος (εφόσον δεν την έχουμε διαλέξει στα προηγούμενα βήματα). Ενώ προσέχουμε να μη σχηματίζεται κύκλος, δεν μας ενδιαφέρει η συνδεσιμότητα της με τις προηγούμενα επιλεχθείσες ακμές. Αυτό έχει ως αποτέλεσμα να δημιουργείται ένα δάσος από δέντρα που αναπτύσσεται κατά κάποιον τρόπο τυχαία. Στον αλγόριθμο Prim, από την άλλη πλευρά, το ελάχιστο δέντρο κάλυμμα ενός γραφήματος αναπτύσσεται πιο «φυσικά», ξεκινώντας μία, αυθαίρετα επιλεγμένη, κορυφή. Σε κάθε επανάληψη, προσθέτουμε ένα νέο κλάδο στο ήδη κατασκευασμένο δέντρο και ο αλγόριθμος σταματάει όταν όλες οι κορυφές του γραφήματος ανήκουν στο δέντρο.


Κατέβασμα ppt "Aλγόριθμος Floyd Βρίσκει τα μήκη των συντομότερων μονοπατιών για κάθε ζεύγος κορυφών ενός προσανατολισμένου γραφήματος με βάρη. Βασική Ιδέα του Αλγόριθμου."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google