Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων CO.RE.LAB. ΣΗΜΜΥ - Ε.Μ.Π.
Άσκηση 1 η : Παιχνίδι επιλογής ακμών Έχουμε ένα ακυκλικό κατευθυνόμενο γράφο, μια αρχική κορυφή και δυο παίκτες. Οι παίκτες διαδοχικά επιλέγουν μια ακμή από την τρέχουσα κορυφή. Τρέχουσα κορυφή στην αρχή είναι η αρχική καισεκάθεβήμα αλλάζει και γίνεται η τελική κορυφή της ακμής που επιλέχθηκε. Ένας παίκτης χάνει όταν βρεθεί σε κορυφή χωρίς εξερχόμενες ακμές και ο αντίπαλός του κερδίζει. Είσοδος: Κατευθυνόμενος ακυκλικός γράφος και αρχική κορυφή Έξοδος: Απάντηση στο ερώτημα: Υπάρχει νικηφόρα στρατηγική για τον 1 ο παίκτη;
Άσκηση 1 η : Παιχνίδι επιλογής ακμών Κορυφή χωρίς εξερχόμενες ακμές ονομάζεται καταβόθρα. Στόχος του κάθε παίκτη είναι να μπορέσει να επιλέξει ακμή που οδηγεί σε καταβόθρα. Παρατήρηση: Σε κατευθυνόμενους ακυκλικούς γράφους υπάρχει πάντα μια καταβόθρα. Ιδέα για τον 1 ο παίκτη: Αν καταφέρει να οδηγήσει τον αντίπαλο του σε κορυφή που οι εξερχόμενες ακμές οδηγούν σε κορυφή με απόσταση 1 από μια καταβόθρα, τότε κερδίζει.
Άσκηση 1 η : Παιχνίδι επιλογής ακμών Παρατήρηση: Αν διώξουμε απότογράφο τις καταβόθρες και τις κορυφές που έχουν ακμή προς κάποια καταβόθρα τότε ο 1 ος παίκτης κερδίζει στον νέο γράφο ανν κερδίζει και στον αρχικό γράφο. Καταβόθρες νέου: (με ακμές μόνο προς κορυφές παλιού γράφου που δεν είναι καταβόθρες) G Καταβόθρες παλιού: Το ευθύ είναι αληθές διότι τότε ο 1 ος παίκτης θα έχει την στρατηγική: Οδήγησε τον αντίπαλο σε μια καταβόθρα του νέου γράφου (αναγκάζοντάς τον να οδηγήσει σε κορυφή με απόσταση 1 από καταβόθρα) Επέλεξε μια ακμή που οδηγεί σε καταβόθρα του παλιού Το αντίστροφο είναι αληθές διότι Για να μπορεί ο 1 ος παίκτης να οδηγήσει τον αντίπαλο σε καταβόθρα τουπαλιούπρέπεινατον έχει αναγκάσει να επιλέξει ακμή προς κορυφή με απόσταση 1 από καταβόθρα Για να επιλέξει ο αντίπαλος ακμή προς κορυφή με απόσταση 1 από καταβόθρα πρέπει να μην είχε άλλη επιλογή και άρα να βρέθηκε σε κορυφή που είναι καταβόθρα στο νέο γράφο
Άσκηση 1 η : Παιχνίδι επιλογής ακμών Παρατηρήσεις: Κάθε καταβόθρα δίνει ήττα σε όποιον βρεθεί εκεί. Κάθε κορυφή με απόσταση 1 από καταβόθρα δίνει νίκη σε όποιον βρεθεί εκεί Για τον νέο γράφο, τις καταβόθρες του και τις κορυφές απόστασης 1 από καταβόθρα ισχύουν κατ αντιστοιχία-αναδρομικά τα ίδια. Ιδέα: Θα αναθέτω τιμές 0 ή 1 στις κορυφές ανάλογα με το αν δίνουν νίκη ή ήττα σε όποιον βρεθεί εκεί. Οι καταβόθρες παίρνουν τιμή 0 Οι κορυφές με απόσταση 1 από κάποια κορυφή που δίνει ήττα παίρνουν τιμή 1 Για την υλοποίηση: Βρίσκω μια τοπολογική διάταξη των κορυφών (σε γραμμικό χρόνο!) Σε αντίστροφη σειρά από τη τοπολογική διάταξη αναθέτω τιμή στις κορυφές: Αν ηκορυφήείναικαταβόθρα της αναθέτω τιμή 0 Αν ηκορυφήέχειόλες τις εξερχόμενες ακμές σε γείτονες με αριθμό 1 τότε της δίνω 0 Αν ηκορυφήέχεικάποια εξερχόμενη ακμή σε γείτονα με αριθμό 0 τότε της δίνω 1. (Πάντα λόγω της διάταξης θα έχουν όλοι οι γείτονες ανάθεση τιμής!) Ανάλογα με τον αριθμό της αρχικής κορυφής απαντάμε για το αν έχει ο πρώτος παίκτης νικηφόρα στρατηγική
Άσκηση 2 η : Σχεδιασμός ταξιδιού ίνεται γράφοςμεβάρηστιςακμές, δύο πόλεις s, t και παράμετρος αυτονομίας L. Ζητούνται απαντήσεις στα εξής ερωτήματα: αρκεί η αυτονομία για το ταξίδι από την s στην t; ποια η ελάχιστη αυτονομία που αρκεί; Παρατήρηση: όποια ακμή έχει βάρος μεγαλύτερο από L δεν χρησιμοποιείται Άρα για το πρώτο ερώτημα Σβήνουμε τις ακμές με βάρος μεγαλύτερο από L, Εκτελούμε BFS από την s και αρκεί να συναντήσουμε την t.
Άσκηση 2 η : Σχεδιασμός ταξιδιού ίνεται γράφοςμεβάρηστιςακμές, δύο πόλεις s, t και παράμετρος αυτονομίας L. Ζητούνται απαντήσεις στα εξής ερωτήματα: αρκεί η αυτονομία για το ταξίδι από την s στην t; ποια η ελάχιστη αυτονομία που αρκεί; Για το δεύτερο ερώτημα θα κάνουμε δυαδική αναζήτηση: Βρίσκουμε το median των κοστών των ακμών (σε γραμμικό χρόνο!). Τρέχουμε τον αλγόριθμο του πρώτου ερωτήματος για L=median Αν οι πόλεις συνδέονται τότε πετάμε τις ακμές με κόστος μεγαλύτερο του median και ξανατρέχουμε τον αλγόριθμο για το νέο γράφο Αν οι πόλεις δεν συνδέονται τότε τα connected components του γράφου θα συνδέονται με ακμές κόστους >median. Τρέχουμε τον αλγόριθμο με είσοδο τον γράφο των connected components του αρχικού
Άσκηση 2 η : Σχεδιασμός ταξιδιού ίνεται γράφοςμεβάρηστιςακμές, δύο πόλεις s, t και παράμετρος αυτονομίας L. Ζητούνται απαντήσεις στα εξής ερωτήματα: αρκεί η αυτονομία για το ταξίδι από την s στην t; ποια η ελάχιστη αυτονομία που αρκεί; είτε ότι το ερώτημα για την ελάχιστη αυτονομία ουσιαστικά απαντιέται μέσω του υπολογισμού ενός minimum bottleneck spanning tree. είτε και στην 3 η σειρά προτεινόμενων ασκήσεων για αυτό το πρόβλημα.
Άσκηση 3 η : ιαχωρισμός γραφήματος ίνεται συνεκτικό γράφημα με βάρη στις ακμές Ζητείται : Να αποδειχθεί ότι κάθε ακμή {u,v} ενός ελάχιστου συνδετικού δέντρου αποτελεί συντομότερο u-v μονοπάτι Να βρεθεί διαμέριση που χωρίζει τις κορυφές του γράφου σε δύο σύνολα ώστε η απόστασή τους να είναι μέγιστη. Για το πρώτο ερώτημα: Έστω ελάχιστο συνδετικό δέντρο Τ και ακμή του {u,v} που δεν είναι ελάχιστο u-v μονοπάτι Βρίσκουμε το ελάχιστο u-v μονοπάτι και το προσθέτουμε στο Τ διαγράφοντας την {u,v} φτιάχνοντας το Τ. Το Τ έχει μικρότερο κόστος από το Τ. Αν δεν είναι δέντρο, το μετατρέπουμε σε δέντρο αφαιρώντας κι άλλες ακμές κι έχουμε το Τ Το Τ είναι συνδετικό δέντρο του γράφου με μικρότερο κόστος από το Τ, άτοπο.
Άσκηση 3 η : ιαχωρισμός γραφήματος Για το δεύτερο ερώτημα: Παρατήρηση 1: Η απόσταση δύο συνόλων πετυχαίνεται σε ακμή. Αληθές διότι κάθε μονοπάτι μεταξύ δύο κορυφών εκατέρωθεν στην διαμέριση, περιέχει μια ακμή με κορυφές εκατέρωθεν (και τα βάρη είναι θετικά). Παρατήρηση 2: Η ελάχιστου βάρους ακμές μεταξύ κορυφών εκατέρωθεν στην διαμέριση, δίνουν την απόσταση των συνόλων της διαμέρισης. Αληθές διότι υπάρχουν ακμές που περνούν από το ένα σύνολο στο άλλο και σε μια από αυτές πετυχαίνεται η απόσταση(με βάση την παρατήρηση 1) Παρατήρηση 3: Κάθε συνδετικό δέντρο περιέχει μια ακμή ελαχίστου βάρους, που δίνει την απόσταση. Αληθές διότι σε κάθε ελάχιστο συνδετικό δέντρο υπάρχει ακμή που περνά από το ένα κομμάτι της διαμέρισης στο άλλο. Μάλιστα ακμή ελαχίστου βάρους για να είναι και αυτό ελάχιστο. Έτσι έχουμε τον αλγόριθμο: Βρες ένα ελάχιστο συνδετικό δέντρο και την βαρύτερη ακμή του. Αφαίρεσέ την και διαμέρισε τις κορυφές με βάση τα δύο υποδέντρα. Επέστρεψε αυτή την διαμέριση.
Άσκηση 4 η : Παιχνίδια εξουσίας Είσοδος: Άνω όριο για τα κάστρα που μπορεί να εποπτεύσει κάθε ιππότης, c i Λίστεςμετουςιππότεςπουμπορούνναπάνεσεκάθεκάστρο, K i Έξοδος: Ανάθεση των κάστρων στους ιππότες ώστε να μην έχουν παραπάνω κάστρα από το όριό τους Μα αυτό μοιάζει με πρόβλημα ταιριάσματος! Ένας τρόπος: Φτιάχνουμε ένα διμερές γράφημα Το ένα σύνολο κορυφών περιέχει τα κάστρα και το άλλο τους ιππότες σε c i αντίγραφα τον καθέναν. Ακμές υπάρχουν μεταξύ κάστρου και αντιγράφου ιππότη ανν ο ιππότης υπάρχει στη λίστα του κάστρου. Αν υπάρχει matching μεγέθους όσο και τα κάστρα τότε βρίσκουμε λύση αλλιώς αποφαινόμαστε ότιδενυπάρχειλύση Ο βασιλιάς όμως δεν καταλαβαίνει (λογικό είναι..) γιατί δεν υπάρχει λύση σε περίπτωση μη ύπαρξης κατάλληλου ταιριάσματος. Θα μετατρέψουμε το πρόβλημα σε πρόβλημα ροής και ελπίζουμε να καταλάβει, δείχνοντάς του ένα minimum cut του γραφήματος
Άσκηση 4 η : Παιχνίδια εξουσίας Φτιάχνουμε ένα διμερές γράφημα Το ένα σύνολο κορυφών περιέχει τους ιππότες και το άλλο τα κάστρα. Ακμές υπάρχουν μεταξύ ιππότη και κάστρου ανν ο ιππότης υπάρχει στη λίστα του κάστρου και έχουν χωρητικότητα 1. Προσθέτουμε μια αρχική και μια τελική κορυφή στο γράφημα Η αρχική συνδέεται με όλες τις κορυφές ιππότων με ακμές χωρητικότητας όσο και το όριο του κάθε ιππότη Οι κορυφές-κάστρα συνδέονται με την τελική κορυφή Εισάγουμε ροή ίση με το πλήθος των κάστρων στο δίκτυο Ανηροήμπορείνακατευθυνθείαπότηναρχικήκορυφήστηντελικήτότε βρίσκουμε και μια λύση κοιτώντας τις φορτωμένες ακμές μεταξύ κάστρων και ιπποτών Αν η ροή δεν μπορεί να κατευθυνθεί βρίσκουμε ένα minimum cut τουγράφουκαι προσπαθούμε να πείσουμε τον βασιλιά.. Για το «παράπλευρο» πρόβλημα του βασιλιά δεν υπάρχει αποδοτικός αλγόριθμος εκτός αν ΝΡ πλήρη προβλήματα λύνονται με αποδοτικό τρόπο... Το εν λόγω πρόβλημά είναι ακριβώς το πρόβλημα του καλύμματος κορυφών.
Άσκηση 5 η : Αναγωγές Πυκνό υπογράφημα: Το πρόβλημα της κλίκας ανάγεται σε αυτό. Αρκεί b=k(k-1)/2. Μακρύ μονοπάτι: Το hamiltonian path ανάγεται σε αυτό. ΑπότογράφοG, n κορυφών, του hamiltonian path, φτιάχνουμε G προσθέτοντας n απομονωμένες κορυφές. Το μονοπάτι μήκους n/2 στον G θα είναι hamiltonian path στον G. G G G G χωρίς ακμές
Άσκηση 5 η : Αναγωγές Σύνολο κορυφών ανάδρασης (κατευθυνόμενο): Το κάλυμμα κορυφών ανάγεται σε αυτό. Για κάθε ακμή του G προσθέτουμε και την αντίστροφή της στο γράφημα G. Οι κύκλοι μήκους 2 στον G σπάνε με τον ίδιο τρόπο που καλύπτονται οι ακμές στον G. Σύνολο κορυφών ανάδρασης (μη κατευθυνόμενο): Το κάλυμμα κορυφών ανάγεται σε αυτό. Για κάθε ακμή του G προσθέτουμε ένα κόμβο στον G και τον συνδέουμε με τα άκρα της ακμής. Τα τρίγωνα-κύκλοι του G σπάνε με επιλογή αναγκαστικά μιας κορυφής που περιέχουν. Η κορυφήαυτήμπορεί και «συμφέρει» να είναι κορυφή που υπάρχει και στον G.