Παραμετρική Πολυπλοκότητα και Αλγόριθμοι
Πληροφορίες Βιβλίο: e-class: MATH278
Βαθμολογία 2 Πακέτα ασκήσεων Παρουσίαση
Βαθμολογία 2 Πακέτα ασκήσεων 2 μονάδες Παρουσίαση
Βαθμολογία 2 Πακέτα ασκήσεων 2 μονάδες Ομάδες 2 ατόμων 50% σωστές στο πακέτο = 1 μονάδα Παρουσίαση
Βαθμολογία 2 Πακέτα ασκήσεων 2 μονάδες Ομάδες 2 ατόμων 50% σωστές στο πακέτο = 1 μονάδα Παρουσίαση 8 μονάδες
Βαθμολογία 2 Πακέτα ασκήσεων 2 μονάδες Ομάδες 2 ατόμων 50% σωστές στο πακέτο = 1 μονάδα Παρουσίαση 8 μονάδες Βαθμός κατανόησης / ποιότητα παρουσίασης
Μέρες και ώρες διαλέξεων?!
Μέρες και ώρες διαλέξεων?! Α. Δευτέρα 11:00-13:00 Τετάρτη 13:00-15:00 Β. Δευτέρα 11:00-14:00 * Γ. Άλλο ** * Ίσως κάποια επιπλέον μαθήματα ** Μόνο σοβαρές προτάσεις
Εισαγωγή
Παραμετρική Πολυπλοκότητα και Αλγόριθμοι
Εισαγωγή
Εισαγωγή
n-πελάτες
n-πελάτες Λίστα με τις πιθανές διενέξεις
n-πελάτες Λίστα με τις πιθανές διενέξεις Μπορούμε να διώξουμε k πελάτες
Π.χ.: n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Δ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=2
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=2
ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ (VERTEX COVER)
ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ (VERTEX COVER) Γράφημα G=(V,E) * (n-κορυφές) * Aπλό, μη-διατεταγμένο
ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ (VERTEX COVER) Γράφημα G=(V,E) * (n-κορυφές) S V (κάλυμμα κορυφών) * Aπλό, μη-διατεταγμένο
ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ (VERTEX COVER) Γράφημα G=(V,E) * (n-κορυφές) S V (κάλυμμα κορυφών) S k * Aπλό, μη-διατεταγμένο
KK NP-πλήρες
KK NP-πλήρες Πολυωνυμικός αλγόριθμος
KK NP-πλήρες Πολυωνυμικός αλγόριθμος Εκθετικός αλγόριθμος
Brute force: Ελέγχουμε όλα τα υποσύνολα του V
Brute force: Ελέγχουμε όλα τα υποσύνολα του V 2 n
Brute force: Ελέγχουμε όλα τα υποσύνολα του V 2 n Για n=1000: 2 1000 1,07 10 301
Brute force: Ελέγχουμε όλα τα υποσύνολα του V 2 n Για n=1000: 2 1000 1,07 10 301
Brute force: Ελέγχουμε όλα τα υποσύνολα του V 2 n Για n=1000: 2 1000 1,07 10 301 k < n
1 η απόπειρα: (Brute force) Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές
<latexit sha1_base64="ohftvndmwh+0ilrtfjztltpiewg=">aaab8nicdzbns8mwhmztx+d8m3r0ehycp9lo6drbqbcpe5wbrgwkwbqfpuljumgugz/ciwcvr34ab34b022cij4qehief8g/vyhlvgnh+bcwlldw19zlg+xnre2d3cre/q0smcskjqutshshrrjlpk2pzqsbsoksijfonl4o+s4dkyokfqmnkqktnoq0phhpewu5d/bicexgenqvvb3b9xon/ww6ds2vn557ham7dc+fru3mvaultfqv92agcjyqrjfdsvvcj9vhjqsmmjfpocgusreeoyhpgctrqlsyz3aewmotdgaspdlcw1n6/uaoequmswqme6rh6ndxhh91vuzhxphtnmaacdx/km4y1aiwaocasoi1mxidskrmv4hhscksdaaygfd1u/i/adds33au69xm5f2crgkcginwalzqae1wbvqgdtbiwqn4as9wzj1al9brfhtjwha8ad9kvx0cthmsew==</latexit> 1 η απόπειρα: (Brute force) Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k
<latexit sha1_base64="ohftvndmwh+0ilrtfjztltpiewg=">aaab8nicdzbns8mwhmztx+d8m3r0ehycp9lo6drbqbcpe5wbrgwkwbqfpuljumgugz/ciwcvr34ab34b022cij4qehief8g/vyhlvgnh+bcwlldw19zlg+xnre2d3cre/q0smcskjqutshshrrjlpk2pzqsbsoksijfonl4o+s4dkyokfqmnkqktnoq0phhpewu5d/bicexgenqvvb3b9xon/ww6ds2vn557ham7dc+fru3mvaultfqv92agcjyqrjfdsvvcj9vhjqsmmjfpocgusreeoyhpgctrqlsyz3aewmotdgaspdlcw1n6/uaoequmswqme6rh6ndxhh91vuzhxphtnmaacdx/km4y1aiwaocasoi1mxidskrmv4hhscksdaaygfd1u/i/adds33au69xm5f2crgkcginwalzqae1wbvqgdtbiwqn4as9wzj1al9brfhtjwha8ad9kvx0cthmsew==</latexit> 1 η απόπειρα: (Brute force) Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k 1000 Για n=1000 και k=10: 10 ' 2.63 10 23
<latexit sha1_base64="ohftvndmwh+0ilrtfjztltpiewg=">aaab8nicdzbns8mwhmztx+d8m3r0ehycp9lo6drbqbcpe5wbrgwkwbqfpuljumgugz/ciwcvr34ab34b022cij4qehief8g/vyhlvgnh+bcwlldw19zlg+xnre2d3cre/q0smcskjqutshshrrjlpk2pzqsbsoksijfonl4o+s4dkyokfqmnkqktnoq0phhpewu5d/bicexgenqvvb3b9xon/ww6ds2vn557ham7dc+fru3mvaultfqv92agcjyqrjfdsvvcj9vhjqsmmjfpocgusreeoyhpgctrqlsyz3aewmotdgaspdlcw1n6/uaoequmswqme6rh6ndxhh91vuzhxphtnmaacdx/km4y1aiwaocasoi1mxidskrmv4hhscksdaaygfd1u/i/adds33au69xm5f2crgkcginwalzqae1wbvqgdtbiwqn4as9wzj1al9brfhtjwha8ad9kvx0cthmsew==</latexit> 1 η απόπειρα: (Brute force) Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k 1000 Για n=1000 και k=10: 10 ' 2.63 10 23
2 η απόπειρα: (Πυρηνοποίηση) Καλοί πελάτες Κακοί πελάτες 0 αντίπαλους k+1 αντίπαλους
2 η απόπειρα: (Πυρηνοποίηση) Καλοί πελάτες Κακοί πελάτες k k-1 0 αντίπαλους k+1 αντίπαλους
2 η απόπειρα: (Πυρηνοποίηση) - Αν σταματήσουμε όλες τις διενέξεις πριν το k γίνει 0 έχουμε λύση.
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β n=6 k=2
2 η απόπειρα: (Πυρηνοποίηση) - Αν σταματήσουμε όλες τις διενέξεις πριν το k γίνει 0 έχουμε λύση. - Αν δεν υπάρχουν πλέον κακοί πελάτες :
2 η απόπειρα: (Πυρηνοποίηση) - Αν σταματήσουμε όλες τις διενέξεις πριν το k γίνει 0 έχουμε λύση. - Αν δεν υπάρχουν πλέον κακοί πελάτες : Διώχνοντας έναν πελάτη σταματάμε k διενέξεις
2 η απόπειρα: (Πυρηνοποίηση) - Αν σταματήσουμε όλες τις διενέξεις πριν το k γίνει 0 έχουμε λύση. - Αν δεν υπάρχουν πλέον κακοί πελάτες : Διώχνοντας έναν πελάτη σταματάμε k διενέξεις Αν υπάρχουν >k 2 διενέξεις δεν υπάρχει λύση
2 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους
2 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι 2k 2
<latexit sha1_base64="+gfxpi7vamecadu75e9vuoen8ny=">aaaclhicbvdlsgmxfm34rpvvdekmwarxzwyopnyvxbisyg2h05zmetugzizjkhhkmod3upfxrhbrxa3fyfpqtpxahcm555lc40eckw3bq2thcwl5ztwzll3f2nzazu3s3iorswovkriqnz8o4cyeimaaqy2sqakfq9xvx4z86j1ixur4owcrnalsdvmhuakn1mpdjm6/6xq0j4qc3e89dnc4mujbaozytrd/e46deoofxnylbvenkdjhasuxtwv2ghieofosr1ouw7kxry1ohecoksdk1r070o2esm0ohztrxqoiqvukc3vdqxkaaitja1n8ajq27ghpjtr4rp7eseig1cdwttiguqdmvzh4n1epdee0kbawijwedpjqj+zyczyqdrezbkr5wbbcjtn/xbrhjkhafjw1jtizj8+tils4k9jxxxzp/ghsrgbtown0hbx0gkrocpvrbvh0ij7rel1zt9ar9w59tkil1rtbpfqh1ucxwuomva==</latexit> 2 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι 2k 2 Brute force: 2k 2 k apple 2 10 2 10 ' 2.24 10 16
<latexit sha1_base64="+gfxpi7vamecadu75e9vuoen8ny=">aaaclhicbvdlsgmxfm34rpvvdekmwarxzwyopnyvxbisyg2h05zmetugzizjkhhkmod3upfxrhbrxa3fyfpqtpxahcm555lc40eckw3bq2thcwl5ztwzll3f2nzazu3s3iorswovkriqnz8o4cyeimaaqy2sqakfq9xvx4z86j1ixur4owcrnalsdvmhuakn1mpdjm6/6xq0j4qc3e89dnc4mujbaozytrd/e46deoofxnylbvenkdjhasuxtwv2ghieofosr1ouw7kxry1ohecoksdk1r070o2esm0ohztrxqoiqvukc3vdqxkaaitja1n8ajq27ghpjtr4rp7eseig1cdwttiguqdmvzh4n1epdee0kbawijwedpjqj+zyczyqdrezbkr5wbbcjtn/xbrhjkhafjw1jtizj8+tils4k9jxxxzp/ghsrgbtown0hbx0gkrocpvrbvh0ij7rel1zt9ar9w59tkil1rtbpfqh1ucxwuomva==</latexit> 2 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι 2k 2 Brute force: 2k 2 k apple 2 10 2 10 ' 2.24 10 16
3 η απόπειρα: (Πυρηνοποίηση) Καλοί πελάτες Κακοί πελάτες Καλούτσικοι πελάτες 0 αντίπαλους k+1 αντίπαλους 1 αντίπαλο
3 η απόπειρα: (Πυρηνοποίηση) Καλοί πελάτες Κακοί πελάτες Καλούτσικοι πελάτες k k-1 0 αντίπαλους k+1 αντίπαλους 1 αντίπαλο (Εφόσον δεν υπάρχουν πια κακοί πελάτες)
3 η απόπειρα: (Πυρηνοποίηση)
3 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους
3 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι k 2
3 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι k 2 Brute force: k 2 k apple 100 10 ' 1.73 10 13
3 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι k 2 Brute force: k 2 k apple 100 10 ' 1.73 10 13
<latexit sha1_base64="2akt/bthu0tyh8wcwlo2nqocarc=">aaacexicdzblswmxfiuzvq2vqks3wslozsiuap2d4salgtvcp5zmetugzibtjcouoea/confcencxa07d/4b04egogcch+/cknwtjojrq8ihmzu9mzs3v7cyw1pewv3lr29capkqbhumhvtvkgoqpiak4uzanvfao1davdg9gezxn6a0l/gf6sdqj2g75i3oqlgokd/lutdfhlcolbpwdxai6ohmi+qlewqqab5br5evehefwbuxcuu+7x+wj8y/wj5lriqgic4a+fegkvkaqwyyofrxpjkyekav4uzaibekghlkurqnnwtjgoguz6ovbnjhkizuswvpbpcifr+r0ujrfhtayyiajv6ddeffws01rcn6xumknrcz8uotvgaj8baf3oqkmbf9ayht3p4vsw5vlbnbys6w8lup/t9uiq7vkvns4ej4dtzgatpc22gxeaimjtapokmvxnadekbp6nm5dx6df+d1pdrltbrcrd/kvh0czrmdlq==</latexit> 3 η απόπειρα: (Πυρηνοποίηση) Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι k 2 Brute force: k 2 k apple 100 10 '
<latexit sha1_base64="2akt/bthu0tyh8wcwlo2nqocarc=">aaacexicdzblswmxfiuzvq2vqks3wslozsiuap2d4salgtvcp5zmetugzibtjcouoea/confcencxa07d/4b04egogcch+/cknwtjojrq8ihmzu9mzs3v7cyw1pewv3lr29capkqbhumhvtvkgoqpiak4uzanvfao1davdg9gezxn6a0l/gf6sdqj2g75i3oqlgokd/lutdfhlcolbpwdxai6ohmi+qlewqqab5br5evehefwbuxcuu+7x+wj8y/wj5lriqgic4a+fegkvkaqwyyofrxpjkyekav4uzaibekghlkurqnnwtjgoguz6ovbnjhkizuswvpbpcifr+r0ujrfhtayyiajv6ddeffws01rcn6xumknrcz8uotvgaj8baf3oqkmbf9ayht3p4vsw5vlbnbys6w8lup/t9uiq7vkvns4ej4dtzgatpc22gxeaimjtapokmvxnadekbp6nm5dx6df+d1pdrltbrcrd/kvh0czrmdlq==</latexit> 3 η απόπειρα: (Πυρηνοποίηση) Προεπεξεργασία Θεωρούμε ότι έχουμε k 2 διενέξεις και κάθε πελάτης έχει k αντιπάλους Οι πελάτες είναι k 2 Brute force: k 2 k apple 100 10 '
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Α;
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Α; ΝΑΙ
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Α; ΝΑΙ ΟΧΙ
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Β;
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Β; ΝΑΙ
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Β k k-1 Υπάρχει λύση (για k-1) αν διώξουμε τον Β; ΝΑΙ ΟΧΙ
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Ζ Δ Β Γ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α vs Β Ζ Δ Β Γ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Β Γ Γ vs Δ Β vs Δ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Γ vs Δ Β vs Δ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος:
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος: 2 k ανδρομικές κλήσεις
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος: 2 k ανδρομικές κλήσεις O(n+m)
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος: 2 k ανδρομικές κλήσεις O(n+nk/2) 2 η απόπειρα
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος: 2 k n k < 2 10 1000 10 = 10240000
4 η απόπειρα: (Φραγμένο δέντρο αναζήτησης) Α Ε Α Α vs Β Β Ζ Β vs Γ Γ vs Δ Δ Β Γ Γ Δ Γ vs Δ Β vs Δ Ζ vs Ε Γ vs Ζ k=3 Γ Δ Β Δ Ζ Ε Γ Ζ Χρόνος: 2 k n k < 2 10 1000 10 = 10240000
4 η απόπειρα 1 η απόπειρα O(2 k n k ) O(n k )
4 η απόπειρα 1 η απόπειρα O(2 10 n 10 ) O(n 10 )
4 η απόπειρα 1 η απόπειρα O(2 10 1000 10 ) O(1000 10 )
4 η απόπειρα 1 η απόπειρα O(2 10 1000 10 ) O(1000 10 )
4 η απόπειρα 1 η απόπειρα O(2 10 1000 10 ) O(1000 10 )
4 η απόπειρα 1 η απόπειρα O(2 k n k ) O(n k )
4 η απόπειρα 1 η απόπειρα O(f(k) n c ) O(f(k) n g(k) )
4 η απόπειρα 1 η απόπειρα O(f(k) n c ) O(f(k) n g(k) ) FPT
4 η απόπειρα 1 η απόπειρα O(f(k) n c ) O(f(k) n g(k) ) FPT XP
4 η απόπειρα 1 η απόπειρα O(f(k) n c ) O(f(k) n g(k) ) FPT XP Παράμετρος k : ένα δευτερεύων μέτρο που αντιπροσωπεύει κάποια πτυχή της εισόδου
Σχεδίαση Παραμετρικών Αλγορίθμων
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση Φραγμένα δέντρα αναζήτησης
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση Φραγμένα δέντρα αναζήτησης Επαναλαμβανόμενη συμπίεση
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση Φραγμένα δέντρα αναζήτησης Επαναλαμβανόμενη συμπίεση Μέθοδοι τυχαιοποίησης
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση Φραγμένα δέντρα αναζήτησης Επαναλαμβανόμενη συμπίεση Μέθοδοι τυχαιοποίησης Φραγμένο δεντροπλάτος και Δυναμικός Προγραμματισμός
Σχεδίαση Παραμετρικών Αλγορίθμων Πυρηνοποίηση Φραγμένα δέντρα αναζήτησης Επαναλαμβανόμενη συμπίεση Μέθοδοι τυχαιοποίησης Φραγμένο δεντροπλάτος και Δυναμικός Προγραμματισμός Σημαντικοί διαχωριστές
Παραμετρική Πολυπλοκότητα και Αλγόριθμοι
n-πελάτες Λίστα με τις πιθανές διενέξεις
n-πελάτες Λίστα με τις πιθανές διενέξεις k-μπαρ Δεν διώχνουμε κανέναν
n-πελάτες Λίστα με τις πιθανές διενέξεις k-μπαρ Δεν διώχνουμε κανέναν (Χωρίζουμε τους πελάτες στα μπαρ ώστε σε κάθε μπαρ να μην υπάρχουν διενέξεις)
ΧΡΩΜΑΤΙΣΜΟΣ ΚΟΡΥΦΩΝ (VERTEX COLORING) Γράφημα G=(V,E) * (n-κορυφές) * Aπλό, μη-διατεταγμένο
ΧΡΩΜΑΤΙΣΜΟΣ ΚΟΡΥΦΩΝ (VERTEX COLORING) Γράφημα G=(V,E) * (n-κορυφές) f:v {1,,k} * Aπλό, μη-διατεταγμένο
ΧΡΩΜΑΤΙΣΜΟΣ ΚΟΡΥΦΩΝ (VERTEX COLORING) Γράφημα G=(V,E) * (n-κορυφές) f:v {1,,k} {u,v} E (f(u) f(v)) * Aπλό, μη-διατεταγμένο
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
XK NP-πλήρες Πολυωνυμικός αλγόριθμος
3-XK NP-πλήρες Πολυωνυμικός αλγόριθμος
3-XK NP-πλήρες Πολυωνυμικός αλγόριθμος Όχι αλγόριθμος με χρόνο O(f(k) n c ), για k 3
3-XK NP-πλήρες Πολυωνυμικός αλγόριθμος Όχι αλγόριθμος με χρόνο O(f(k) n c ), για k 3 Ούτε με χρόνο O(f(k) n g(k) ), για k 3
Όχι FPT αλγόριθμοι για κάθε πρόβλημα
Γιατί; Όχι FPT αλγόριθμοι για κάθε πρόβλημα
Όχι FPT αλγόριθμοι για κάθε πρόβλημα NP-C Γιατί;. P P P P 4 3 2 1 k ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ
Όχι FPT αλγόριθμοι για κάθε πρόβλημα NP-C NP-C Γιατί;. P P P P 4 3 2 1 k. NP-C NP-C P P 4 3 2 1 k ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ ΧΡΩΜΑΤΙΣΜΟΣ ΚΟΡΥΦΩΝ
NP-Πληρότητα?!
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του Μπορούμε να διαχειριστούμε μέχρι (k-1)-πελάτες
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του Μπορούμε να διαχειριστούμε μέχρι (k-1)-πελάτες Υπάρχει ομάδα k-πελατών όπου όλοι είναι φίλοι με όλους;
k-κλικα (k-clique) (Φιλίες) Γράφημα G=(V, E ) * (n-κορυφές) * Aπλό, μη-διατεταγμένο
k-κλικα (k-clique) (Φιλίες) Γράφημα G=(V, E ) * (n-κορυφές) S V, {u,v} S ({u,v} E) * Aπλό, μη-διατεταγμένο
k-κλικα (k-clique) (Φιλίες) Γράφημα G=(V, E ) * (n-κορυφές) S V, {u,v} S ({u,v} E) S k * Aπλό, μη-διατεταγμένο
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Π.χ.: Α Ε Ζ Δ Β Γ n=6 k=3
Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές
<latexit sha1_base64="ohftvndmwh+0ilrtfjztltpiewg=">aaab8nicdzbns8mwhmztx+d8m3r0ehycp9lo6drbqbcpe5wbrgwkwbqfpuljumgugz/ciwcvr34ab34b022cij4qehief8g/vyhlvgnh+bcwlldw19zlg+xnre2d3cre/q0smcskjqutshshrrjlpk2pzqsbsoksijfonl4o+s4dkyokfqmnkqktnoq0phhpewu5d/bicexgenqvvb3b9xon/ww6ds2vn557ham7dc+fru3mvaultfqv92agcjyqrjfdsvvcj9vhjqsmmjfpocgusreeoyhpgctrqlsyz3aewmotdgaspdlcw1n6/uaoequmswqme6rh6ndxhh91vuzhxphtnmaacdx/km4y1aiwaocasoi1mxidskrmv4hhscksdaaygfd1u/i/adds33au69xm5f2crgkcginwalzqae1wbvqgdtbiwqn4as9wzj1al9brfhtjwha8ad9kvx0cthmsew==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> <latexit sha1_base64="bzccnnqursqylsywbytlb0gmc5k=">aaab8nicbzblswmxfiuzpmt9vv26crahbspmedrdqrb3vnbsotowtcbthmasibkjlflwv7hxoelwx+pof2p6wgjrgcdhotfk5ksz4azc99tzwl5zxvsvbbq3t7z3dkt7+/dg5zoynyqhdcsihgkumq8cbgtlmpe0eqwz9s/heforacovvinbxskudcvpocvgrscgsqj8u+k/1e46pbjbdsfci+dnoixmanrkx0gsaj4ycvqqy9qem0e4jbo4fwxudhldmkl7pmvafivjmqmhk51h+ng6mu6utkccnri/bwxjaswgjexksqbn5rox+v/wzie5d4dczjkwsacpjbnaopc4abxzzsiigqvcnbe7ytojmlcwnrvtcd78lxfbr1uvqu7tabl+9trto4ao0rgqia+dotq6rg3ki4oy9ixe0zutoy/ou/mxhv1yzg0eod9ypn8aiiircg==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2 O(k 2 )
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> <latexit sha1_base64="bzccnnqursqylsywbytlb0gmc5k=">aaab8nicbzblswmxfiuzpmt9vv26crahbspmedrdqrb3vnbsotowtcbthmasibkjlflwv7hxoelwx+pof2p6wgjrgcdhotfk5ksz4azc99tzwl5zxvsvbbq3t7z3dkt7+/dg5zoynyqhdcsihgkumq8cbgtlmpe0eqwz9s/heforacovvinbxskudcvpocvgrscgsqj8u+k/1e46pbjbdsfci+dnoixmanrkx0gsaj4ycvqqy9qem0e4jbo4fwxudhldmkl7pmvafivjmqmhk51h+ng6mu6utkccnri/bwxjaswgjexksqbn5rox+v/wzie5d4dczjkwsacpjbnaopc4abxzzsiigqvcnbe7ytojmlcwnrvtcd78lxfbr1uvqu7tabl+9trto4ao0rgqia+dotq6rg3ki4oy9ixe0zutoy/ou/mxhv1yzg0eod9ypn8aiiircg==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2 O(k 2 ) Χρόνος: Ο(n k )
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> <latexit sha1_base64="bzccnnqursqylsywbytlb0gmc5k=">aaab8nicbzblswmxfiuzpmt9vv26crahbspmedrdqrb3vnbsotowtcbthmasibkjlflwv7hxoelwx+pof2p6wgjrgcdhotfk5ksz4azc99tzwl5zxvsvbbq3t7z3dkt7+/dg5zoynyqhdcsihgkumq8cbgtlmpe0eqwz9s/heforacovvinbxskudcvpocvgrscgsqj8u+k/1e46pbjbdsfci+dnoixmanrkx0gsaj4ycvqqy9qem0e4jbo4fwxudhldmkl7pmvafivjmqmhk51h+ng6mu6utkccnri/bwxjaswgjexksqbn5rox+v/wzie5d4dczjkwsacpjbnaopc4abxzzsiigqvcnbe7ytojmlcwnrvtcd78lxfbr1uvqu7tabl+9trto4ao0rgqia+dotq6rg3ki4oy9ixe0zutoy/ou/mxhv1yzg0eod9ypn8aiiircg==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2 O(k 2 ) Χρόνος: Ο(n k ) XP
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> <latexit sha1_base64="bzccnnqursqylsywbytlb0gmc5k=">aaab8nicbzblswmxfiuzpmt9vv26crahbspmedrdqrb3vnbsotowtcbthmasibkjlflwv7hxoelwx+pof2p6wgjrgcdhotfk5ksz4azc99tzwl5zxvsvbbq3t7z3dkt7+/dg5zoynyqhdcsihgkumq8cbgtlmpe0eqwz9s/heforacovvinbxskudcvpocvgrscgsqj8u+k/1e46pbjbdsfci+dnoixmanrkx0gsaj4ycvqqy9qem0e4jbo4fwxudhldmkl7pmvafivjmqmhk51h+ng6mu6utkccnri/bwxjaswgjexksqbn5rox+v/wzie5d4dczjkwsacpjbnaopc4abxzzsiigqvcnbe7ytojmlcwnrvtcd78lxfbr1uvqu7tabl+9trto4ao0rgqia+dotq6rg3ki4oy9ixe0zutoy/ou/mxhv1yzg0eod9ypn8aiiircg==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2 O(k 2 ) Χρόνος: Ο(n k ) FPT?
<latexit sha1_base64="ypmt0cc4dr+/cu942ld2tq5rdv4=">aaacehicdzbns8mwhmzt351vu49egkoyl9lo6badiaritqwnwjphmqvbajqujbvgkfgjvphvvhhq8errm9/gdfnq0qccd8/zd8n/58emku0479by+mtk1ptmbgfufmfxqbi8cq5eijfpysgevpsrioxy0trum3izs4iin5elpzzi+4trihuv/ewpytkoui/tggkktdqpllmopdwxqheyzrvh3j7tlb1aipzyqzblw6tklmebnwljsrv1wq2xdr270qhu7drzu3vrdre6tjnucxzqpfn887ocjxhhgjokvmt1yt1okdqum5ivvesrgoeq9ujlwi4iotrpckmmbpikcwmhzeeadtpvn1iuktwifdmzid1xv7s8/ktrjtqot1pk40qtjkcpbqmdwsacd+xssbbma2mqltt8fei+mji0gvgwel42hf+bzsvu2m5ptbr3edoimqpwwdooaxfuwb44aiegctc4bffgetxzd9ad9wy9jebhre+cq+chrncp5gmdtw==</latexit> <latexit sha1_base64="bzccnnqursqylsywbytlb0gmc5k=">aaab8nicbzblswmxfiuzpmt9vv26crahbspmedrdqrb3vnbsotowtcbthmasibkjlflwv7hxoelwx+pof2p6wgjrgcdhotfk5ksz4azc99tzwl5zxvsvbbq3t7z3dkt7+/dg5zoynyqhdcsihgkumq8cbgtlmpe0eqwz9s/heforacovvinbxskudcvpocvgrscgsqj8u+k/1e46pbjbdsfci+dnoixmanrkx0gsaj4ycvqqy9qem0e4jbo4fwxudhldmkl7pmvafivjmqmhk51h+ng6mu6utkccnri/bwxjaswgjexksqbn5rox+v/wzie5d4dczjkwsacpjbnaopc4abxzzsiigqvcnbe7ytojmlcwnrvtcd78lxfbr1uvqu7tabl+9trto4ao0rgqia+dotq6rg3ki4oy9ixe0zutoy/ou/mxhv1yzg0eod9ypn8aiiircg==</latexit> Brute force: Ελέγχουμε όλα τα υποσύνολα του V με k κορυφές n k n k = O k 2 O(k 2 ) Χρόνος: Ο(n k ) FPT? Σταθερό k Πολυωνυμικός αλγόριθμος
NP-C. P P P P 4 3 2 1 k k-κλικα
NP-C. P P P P 4 3 2 1 k k-κλικα Κι όμως
NP-C. P P P P 4 3 2 1 k k-κλικα Κι όμως k-κλικα W[1]-C
NP-C. P P P P 4 3 2 1 k k-κλικα Κι όμως k-κλικα W[1]-C δεν έχει FPT αλγόριθμο
FPT vs XP NP-Πληρότητα?!
FPT vs XP NP-Πληρότητα?!
Παραμετρική Πολυπλοκότητα
Παραμετρική Πολυπλοκότητα Παραμετρικές αναγωγές
Παραμετρική Πολυπλοκότητα Παραμετρικές αναγωγές Κλάσεις Πολυπλοκότητας (π.χ. FPT, W[1], XP)
Παραμετρική Πολυπλοκότητα Παραμετρικές αναγωγές Κλάσεις Πολυπλοκότητας (π.χ. FPT, W[1], XP) W-ιεραρχία κλάσεων προβλημάτων
Παραμετρική Πολυπλοκότητα Παραμετρικές αναγωγές Κλάσεις Πολυπλοκότητας (π.χ. FPT, W[1], XP) W-ιεραρχία κλάσεων προβλημάτων Κάτω φράγματα (ETH) Βέλτιστοι αλγόριθμοι
Παραμετρική Πολυπλοκότητα και Αλγόριθμοι
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του Μπορούμε να διαχειριστούμε μέχρι (k-1) πελάτες Υπάρχει ομάδα k-πελατών όπου όλοι είναι φίλοι με όλους;
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του Μπορούμε να διαχειριστούμε μέχρι (k-1) πελάτες Υπάρχει ομάδα k-πελατών όπου όλοι είναι φίλοι με όλους;
Αν διώξουμε ένα πελάτη μας επιτίθενται όλοι οι φίλοι του Μπορούμε να διαχειριστούμε μέχρι (k-1) πελάτες Υπάρχει ομάδα k-πελατών όπου όλοι είναι φίλοι με όλους; Παράμετρος: μέγιστος αριθμός φίλων
k-κλικα (k-clique) (Φιλίες) Γράφημα G=(V, E ) * (n-κορυφές) S V, {u,v} S ({u,v} E) S k * Aπλό, μη-διατεταγμένο
k-κλικα (k-clique) (Φιλίες) Γράφημα G=(V, E ) * (n-κορυφές) S V, {u,v} S ({u,v} E) S k Παράμετρος: Δ (μέγιστος βαθμός) * Aπλό, μη-διατεταγμένο
Brute force: Μαντεύουμε μια κορυφή της k-κλίκας, κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της αν είναι κλίκα.
Brute force: Μαντεύουμε μια κορυφή της k-κλίκας, κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της αν είναι κλίκα. Έχει η μεγαλύτερη κλίκα k κορυφές;
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της αν είναι κλίκα. Έχει η μεγαλύτερη κλίκα k κορυφές;
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της αν είναι κλίκα. Έχει η μεγαλύτερη κλίκα k κορυφές;
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της Ο(2 Δ ) αν είναι κλίκα. Έχει η μεγαλύτερη κλίκα k κορυφές;
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της Ο(2 Δ ) αν είναι κλίκα. Ο(Δ 2 ) Έχει η μεγαλύτερη κλίκα k κορυφές;
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της Ο(2 Δ ) αν είναι κλίκα. Ο(Δ 2 ) Έχει η μεγαλύτερη κλίκα k κορυφές; Ο(1)
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της Ο(2 Δ ) αν είναι κλίκα. Ο(Δ 2 ) Έχει η μεγαλύτερη κλίκα k κορυφές; Ο(1) Ο(2 Δ Δ 2 n)
Brute force: Χρόνος: Μαντεύουμε μια κορυφή της k-κλίκας, Ο(n) κοιτάμε για κάθε ένα υποσύνολο της γειτονιάς της Ο(2 Δ ) αν είναι κλίκα. Ο(Δ 2 ) Έχει η μεγαλύτερη κλίκα k κορυφές; Ο(1) Ο(f(Δ) n)
k-κλικα παράμετρος k FPT k-κλικα παράμετρος Δ FPT
Παράμετρος
Παράμετρος k (παράμετρος) n (είσοδος)
Παράμετρος k (παράμετρος) n (είσοδος) FPT: O(f(k) n c )
Παράμετρος k (παράμετρος) n (είσοδος) FPT: O(f(k) n c )
Παράμετρος k (παράμετρος) n (είσοδος) FPT: O(f(k) n c )