@@ -54,31 +54,34 @@ _διαδρομή_ ορίζουμε μια πεπερασμένη ακολουθ
5454## Γενικές Παρατηρήσεις
5555
5656Πριν προχωρήσουμε, ας παρατηρήσουμε κάποιες ιδιότητες της βέλτιστης λύσης που
57- θα μας φανούν χρήσιμα σε όλα τα υποπροβλήματα που ακολουθούν. Αρχικά, στη
58- βέλτιστη λύση δεν θα χρειαστεί ποτέ να διασχίσουμε κάποιο δρόμο πάνω από δύο
59- φορές (μπορείτε να δείτε γιατί;).
60-
61- Γενικότερα, η βέλτιστη λύση θα είναι μια διαδρομή η οποία θα περιλαμβάνει
62- το (μοναδικό) μονοπάτι που συνδέει τα σπίτια $$ L $$ και $$ R $$ , όπου σε κάθε
63- στάση σε κάποιο σπίτι $$ u $$ , θα έχουμε την ευκαιρία να "ξεφύγουμε" για λίγο από
64- το βασικό του μονοπάτι και να εξερευνήσουμε τα σπίτια που συνδέονται με το
65- $$ u $$ (άμεσα ή έμμεσα μέσω άλλων δρόμων), να μαζέψουμε όσα περισσότερα
66- φιλοδωρήματα μπορούμε, να επιστρέψουμε πάλι στο $$ u $$ και να συνεχίσουμε προς
67- τον τελικό μας προορισμό. Έτσι, στο τέλος θα έχουμε διασχίσει τους δρόμους που
68- βρίσκονται στο κεντρικό μονοπάτι μεταξύ $$ L $$ και $$ R $$ μόνο μια φορά, και για
69- κάθε άλλο δρόμο θα τον έχουμε διασχίσει είτε καμία είτε δύο φορές.
70-
71- Τέλος, παρατηρούμε οτι η απάντηση στο ερώτημα $$ L, R $$ είναι η ίδια με
72- την απάντηση στο ερώτημα $$ R, L $$ λόγω συμμετρίας (οι δρόμοι είναι διπλής
73- κατεύθυνσης).
57+ θα μας φανούν χρήσιμα σε όλα τα υποπροβλήματα που ακολουθούν.
58+
59+ ** Παρατήρηση 1** :
60+ Στη βέλτιστη λύση δεν θα χρειαστεί ποτέ να διασχίσουμε κάποιο δρόμο πάνω από
61+ δύο φορές.
62+
63+ ** Παρατήρηση 2** :
64+ Η βέλτιστη λύση θα είναι μια διαδρομή η οποία θα περιλαμβάνει το (μοναδικό)
65+ μονοπάτι που συνδέει τα σπίτια $$ L $$ και $$ R $$ , όπου σε κάθε στάση σε κάποιο
66+ σπίτι $$ u $$ , θα έχουμε την ευκαιρία να "ξεφύγουμε" για λίγο από το βασικό του
67+ μονοπάτι και να εξερευνήσουμε τα σπίτια που συνδέονται με το $$ u $$ (άμεσα ή
68+ έμμεσα μέσω άλλων δρόμων), να μαζέψουμε όσα περισσότερα φιλοδωρήματα μπορούμε,
69+ να επιστρέψουμε πάλι στο $$ u $$ και να συνεχίσουμε προς τον τελικό μας
70+ προορισμό. Έτσι, στο τέλος θα έχουμε διασχίσει τους δρόμους που βρίσκονται στο
71+ κεντρικό μονοπάτι μεταξύ $$ L $$ και $$ R $$ μόνο μια φορά, και για κάθε άλλο δρόμο
72+ θα τον έχουμε διασχίσει είτε καμία είτε δύο φορές.
73+
74+ ** Παρατήρηση 3** :
75+ Η απάντηση στο ερώτημα $$ L, R $$ είναι η ίδια με την απάντηση στο ερώτημα $$R,
76+ L$$ λόγω συμμετρίας (οι δρόμοι είναι διπλής κατεύθυνσης).
7477
7578## Υποπρόβλημα 2 ($$ N \le 1.000, Q \le 1.000, L = R $$ ) --- Λύση $$ \mathcal{O}(N Q) $$
7679
7780Ο περιορισμός $$ L = R $$ απλουστεύει το πρόβλημα καθώς δεν χρειάζεται να
7881ασχοληθούμε με το μέρος της λύσης που περιλαμβάνει το μονοπάτι που αναφέραμε
7982προηγουμένως, παρά μόνο με την επιμέρους εξερεύνηση.
8083
81- Ας φανταστούμε ότι το σπίτι $$ L $$ από το οποία ξεκινάμε είναι η ρίζα του
84+ Ας φανταστούμε ότι το σπίτι $$ L $$ από το οποίο ξεκινάμε είναι η ρίζα του
8285δέντρου που αναπαριστά το οδικό δίκτυο. Κάθε σπίτι $$ u $$ που συνδέεται άμεσα με
8386το $$ L $$ ορίζει ένα _ υποδέντρο_ το οποίο θα συμβολίζουμε με
8487$$ \text{subtree}(u) $$ . Για κάθε ένα από αυτά τα δέντρα, έχουμε να κάνουμε μια
@@ -90,7 +93,7 @@ $$\text{subtree}(u)$$. Για κάθε ένα από αυτά τα δέντρα
90932 . να _ μη διασχίσουμε ποτέ_ το δρόμο που συνδέει το σπίτι $$ L $$ με το σπίτι
9194 $$ u $$ .
9295
93- Ας συμβολίσουμε με $$ \text{subtree\_loop\_opt}[u] $$ το μέγιστό δυνατό κέρδος
96+ Ας ορίσουμε $$ \text{subtree\_loop\_opt}[u] $$ ως το μέγιστό δυνατό κέρδος
9497που μπορούμε να έχουμε αν ξεκινήσουμε από το σπίτι $$ u $$ , κινούμαστε μόνο μέσα
9598στο υποδέντρο που ορίζει το σπίτι $$ u $$ , και τελικά επιστρέψουμε πάλι στο
9699$$ u $$ .
@@ -107,7 +110,7 @@ $$u$$.
107110$$ \text{subtree\_ loop\_ opt}[u] = t_u + \sum_{v \in \text{children}(u)}
108111\left( \text{subtree\_loop\_opt}[v] - 2 \cdot w_{u, v} \right)^+ $$
109112
110- όπου ο συμβολισμός $$ (x)^+ $$ σημαίνει $$ \max(0, x) $$ και $$ \text{children}[u] $$
113+ όπου ο συμβολισμός $$ (x)^+ $$ σημαίνει $$ \max(0, x) $$ και $$ \text{children}(u) $$
111114είναι το σύνολο με όλα τα παιδιά της κορυφής $$ u $$ .
112115
113116Η τελική απάντηση στο ερώτημα βρίσκεται στο $$ \text{subree\_loop\_opt}[L] $$ .
@@ -133,7 +136,7 @@ $$\text{subtree}(L)$$ για το οποίο μπορούμε να υπολογ
133136Σε αντίθεση όμως με πριν, μόλις επιστρέψουμε στο $$ L $$ θα πρέπει να ανέβουμε
134137ένα επίπεδο παραπάνω, ακολουθώντας το μονοπάτι προς τη ρίζα και μαζεύοντας κι
135138άλλα φιλοδωρήματα στην πορεία. Ας ορίσουμε λοιπόν την ποσότητα
136- $$ \text{supertree\_root\_opt}[u] $$ η οποία θα είναι ίση με το μέγιστο κέρδος που
139+ $$ \text{supertree\_root\_opt}[u] $$ ως το μέγιστο κέρδος που
137140μπορούμε να έχουμε όταν ξεκινάμε από το σπίτι $$ u $$ (χωρίς όμως να συλλέγουμε
138141το φιλοδώρημα του $$ u $$ ), καταλλήγουμε τελικά στη ρίζα $$ R $$ του δέντρου, και
139142σε όλη τη διαδρομή απαγορεύεται να επισκεφτούμε οποιοδήποτε σπίτι βρίσκεται στο
@@ -142,7 +145,7 @@ $$\text{supertree\_root\_opt}[u]$$ η οποία θα είναι ίση με τ
142145Εαν υπολογίσουμε την τιμή της παραπάνω ποσότητας για την κορυφή $$ L $$ , τότε
143146μπορούμε να υπολογίσουμε την απάντηση του ερωτήματος απλά με το άθροισμα:
144147
145- $$ \text{subtree\_loop\_opt}[L] + \text{supertree\_root\_opt}[L] $$ .
148+ $$ \text{subtree\_loop\_opt}[L] + \text{supertree\_root\_opt}[L]. $$
146149
147150Μπορούμε να υπολογίσουμε όλες τις τιμές $$ \text{supertree\_root\_opt}[u] $$ από
148151"πάνω προς τα κάτω" χρησιμοποιώντας τις τιμές $$ \text{subtree\_loop\_opt} $$ ως
@@ -173,11 +176,11 @@ $$\text{supertree\_root\_opt}$$ για τον γονέα $$\text{parent(u)}$$ τ
173176όταν αυτή έχει θετικό πρόσημο. Τέλος, σε κάθε περίπτωση, συμπεριλαμβάνουμε και
174177το κόστος διάσχισης του δρόμου $$ (u, \text{parent}[u]) $$ ακριβώς μία φορά.
175178
176- Για την επίλυση ενός ερωτήματος λοιπόν χρειάστηκαν _ δύο διασχίσεις_ του
177- δέντρου (μια για τον υπολογισμό των $$ \text{subtree\_loop\_opt} $$ , και έπειτα
178- μια για τον υπολογισμό των $$ \text{supertree\_root\_opt} $$ ), επομένως
179- $$ \mathcal{O}(N) $$ χρόνος . Συνολικά $$ \mathcal{O}(N \cdot Q) $$ πολυπλοκότητα και
180- γι' αυτό το υποπρόβλημα.
179+ Για την επίλυση ενός ερωτήματος λοιπόν χρειάστηκαν _ δύο διασχίσεις_ του δέντρου
180+ (μια για τον υπολογισμό των $$ \text{subtree\_loop\_opt} $$ , και έπειτα μια για
181+ τον υπολογισμό των $$ \text{supertree\_root\_opt} $$ ), οι οποίες γίνονται σε
182+ $$ \mathcal{O}(N) $$ χρόνο . Συνολικά $$ \mathcal{O}(N \cdot Q) $$ πολυπλοκότητα
183+ και γι' αυτό το υποπρόβλημα.
181184
182185## Υποπρόβλημα 4 ($$ L = R $$ ) --- Λύση $$ \mathcal{O}(N + Q) $$
183186
@@ -203,16 +206,18 @@ $$\text{supertree\_loop\_opt}[u]$$, ώστε να την έχουμε διαθέ
203206
204207Μάλιστα, οι τιμές αυτές μοιάζουν πολύ με τις τιμές $$ \text{supertree\_root\_opt} $$ που
205208ορίσαμε στο προηγούμενο υποπρόβλημα, με τη διαφορά όμως ότι δεν είναι πλέον αναγκαίο
206- να φτάσουμε μέχρι τη ρίζα, αλλά πρέπει να γυρίσουμε πίσω στην κορυφή $$ u $$ . Ο τύπος
207- που είχαμε προηγούμενως αλλάζει ως εξής:
209+ να φτάσουμε μέχρι τη ρίζα, αλλά πρέπει να γυρίσουμε πίσω στην κορυφή $$ u $$ ,
210+ το οποίο σημαίνει ότι πρέπει να μετρήσουμε το κόστος του δρόμου
211+ $$ (u, \text{parent}(u)) $$ ** δύο φορές** . Ο τύπος που είχαμε προηγούμενως
212+ αλλάζει ως εξής:
208213
209214$$
210215\begin{align*}
211216\text{supertree\_loop\_opt}[u] =
212217 ( & \text{supertree\_loop\_opt}[\text{parent}(u)]
213218 + \text{subtree\_loop\_opt}[\text{parent}(u)] \\
214219 &- (\text{subtree\_loop\_opt}[u] - 2 \cdot w_{u, \text{parent}(u)})^+
215- - 2 \cdot w_{u, \text{parent}(u)} )^+
220+ - \textcolor{red}{2} \cdot w_{u, \text{parent}(u)} )^+
216221\end{align*}
217222$$
218223
@@ -222,7 +227,7 @@ $$\text{supertree\_loop\_opt}$$ με ρίζα την κορυφή 1 μπορεί
222227ερωτήματα, κι έπειτα για κάθε ερώτημα, μπορούμε να υπολογίσουμε την απάντηση σε
223228σταθερό χρόνο με τον τύπο:
224229
225- $$ \text{subtree\_loop\_opt}[L] + \text{supertree\_loop\_opt}[L] $$ .
230+ $$ \text{subtree\_loop\_opt}[L] + \text{supertree\_loop\_opt}[L]. $$
226231
227232Συνολικά η λύση αυτή έχει χρονική πολυπλοκότητα $$ \mathcal{O}(N + Q) $$ .
228233
@@ -259,7 +264,7 @@ $$\text{subtree\_loop\_opt}[L] + \text{supertree\_loop\_opt}[L]$$.
259264όπως στον ορισμό του $$ \text{supertree\_loop\_opt} $$ παραπάνω).
260265
261266Για την ώρα, ας υποθέσουμε ότι γνωρίζουμε τον ελάχιστο κοινό πρόγονο $$z =
262- LCA(L, R)$$.
267+ \text{ LCA} (L, R)$$.
263268
264269Έχουμε τις παρακάτω περιπτώσεις:
265270
@@ -343,4 +348,4 @@ LCA(L, R)$$.
343348
344349Η λύση που περιγράψαμε έχει συνολική πολυπλοκότητα $$\mathcal{O}
345350( (N + Q) \log N )$$ η οποία μας καλύπτει για τους περιορισμούς
346- του προβλήματος.
351+ του προβλήματος.
0 commit comments