Υπολογισμός δεύτερου μικρότερου στοιχείου

Mathletic
Δημοσιεύσεις: 275
Εγγραφή: Πέμ Μαρ 21, 2013 11:25 pm

Υπολογισμός δεύτερου μικρότερου στοιχείου

#1

Μη αναγνωσμένη δημοσίευση από Mathletic » Τρί Σεπ 16, 2014 2:25 am

Γειά :logo:

Έχουμε ένα σύνολο αριθμών M και θέλουμε να δείξουμε ότι μπορούμε να υπολογίσουμε το δεύτερο μικρότερο στοιχείο του M με n + \lceil lg n \rceil − 2 συγκρίσεις στη χειρότερη περίπτωση.
Μπορούμε να βρούμε το ελάχιστο στοιχείο, θεωρώντας ένα δέντρο τουρνουά.

Σκέφτηκα να το αποδείξω επαγωγικά ως εξής:

Για n=2 χρειαζόμαστε μία σύγκριση, προκειμένου να βρούμε το δεύτερο μικρότερο στοιχείο.

n + \lceil lg n \rceil − 2=2+\lceil lg 2 \rceil − 2=1 \checkmark


Υποθέτουμε ότι, έχοντας n στοιχεία, χρειαζόμαστε n + \lceil lg n \rceil − 2 συγκρίσεις για την εύρεση του δεύτερου μικρότερου στοιχείου.


Πώς μπορώ να συνεχίσω και να αποδείξω ότι αν έχουμε n+1 στοιχεία, χρειαζόμαστε (n+1) + \lceil lg (n+1) \rceil − 2 συγκρίσεις για την εύρεση του δεύτερου μικρότερου στοιχείου;


Ή υπάρχει καλύτερος τρόπος να αποδειχθεί η πρόταση;


Mihalis_Lambrou
Επιμελητής
Δημοσιεύσεις: 18195
Εγγραφή: Κυρ Δεκ 21, 2008 2:04 am

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#2

Μη αναγνωσμένη δημοσίευση από Mihalis_Lambrou » Τρί Σεπ 16, 2014 7:08 am

Mathletic έγραψε: Πώς μπορώ να συνεχίσω και να αποδείξω ότι αν έχουμε n+1 στοιχεία, χρειαζόμαστε (n+1) + \lceil lg (n+1) \rceil − 2 συγκρίσεις για την εύρεση του δεύτερου μικρότερου στοιχείου;
Είναι πολύ απλό.

Υπόδειξη: Αν έχεις n+1 αντικείμενα, βγάλε ένα. Μετά α) βρες το δεύτερο μικρότερο αντικείμενο των n που μένουν (θέλεις n + \lceil lg n\rceil − 2 συγκρίσεις το πολύ). β) Σύγκρινε αυτό που έβγαλες με το δεύτερο μικρότερο αντικείμενο των n (ίσον μία σύγκριση ακόμη). γ) Ρώτα τώρα τον εαυτό σου αν το σύνολο των συγκρίσεων που έκανες είναι μικρότερο ή ίσο του (n+1) + \lceil lg (n+1) \rceil − 2 .


Αντώνης Πάπαρης
Δημοσιεύσεις: 19
Εγγραφή: Κυρ Φεβ 09, 2014 1:27 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#3

Μη αναγνωσμένη δημοσίευση από Αντώνης Πάπαρης » Τρί Σεπ 16, 2014 4:38 pm

Έστω ότι έχεις τοποθετημένους τους αριθμούς σε μια γραμμή
Δημιουργείς νέα γραμμή συγκρίνοντας τα στοιχεία: το 1 με το 2, το 3 με το 4 κοκ, και παίρνοντας το μικρότερο.
Συνεχίζεις μέχρι να φτάσεις να έχεις γραμμή με 1 στοιχείο

Μέχρι εδώ έχεις N-1 συγκρίσεις. Μόνο που έχεις βρει το μικρότερο.

Πηγαίνεις στην προηγούμενη γραμμή, παίρνεις το μεγαλύτερο στοιχείο (αυτό που "έχασε" από το μικρότερο), το ορίζεις ως τρέχων και ακολουθείς την πορεία του μικρότερου προς τα πίσω, συγκρίνοντας το "τρέχων" με το "μεγαλύτερο του ζεύγους" και ορίζοντας ως νέο τρέχων το μικρότερο. Έτσι βρίσκεις το 2ο μικρότερο με \lceil lg n \rceil − 1 συγκρίσεις.

Έτσι έχεις βρει το 2ο μικρότερο με n + \lceil lg n \rceil − 2 συγκρίσεις.


Mathletic
Δημοσιεύσεις: 275
Εγγραφή: Πέμ Μαρ 21, 2013 11:25 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#4

Μη αναγνωσμένη δημοσίευση από Mathletic » Τετ Σεπ 17, 2014 3:30 am

Αντώνης Πάπαρης έγραψε:Έστω ότι έχεις τοποθετημένους τους αριθμούς σε μια γραμμή
Δημιουργείς νέα γραμμή συγκρίνοντας τα στοιχεία: το 1 με το 2, το 3 με το 4 κοκ, και παίρνοντας το μικρότερο.
Συνεχίζεις μέχρι να φτάσεις να έχεις γραμμή με 1 στοιχείο

Μέχρι εδώ έχεις N-1 συγκρίσεις. Μόνο που έχεις βρει το μικρότερο.
Για να μπορούμε να συγκρίνουμε τα στοιχεία ανά ζεύγη υποθέτουμε ότι το πλήθος είναι δύναμη του 2 ;
Ή πρέπει να πάρουμε περιπτώσεις για το N ;


Θα πρέπει να αποδείξουμε ότι μέχρι εδώ έχουμε N-1 συγκρίσεις;

Μπορούμε να το δείξουμε ως εξής;

Στην πρώτη γραμμή συγκρίνουμε τους αριθμούς ανά ζεύγη, άρα έχουμε \frac{N}{2} συγκρίσεις.
Στην δεύτερη γραμμή έχουμε \frac{N}{2} αριθμούς, τους οποίους συγκρίνουμε ανά ζεύγη, άρα έχουμε \frac{N}{4} συγκρίσεις.
...
Στην προτελευταία γραμμή έχουμε 2 αριθμούς, άρα έχουμε μία σύγκριση.

Ο συνολικός αριθμός των συγκρίσεων ισούται με \displaystyle{\sum_{i=1}^{\log_2 N} \frac{N}{2^i}=\sum_{i=0}^{\log_2 N} \frac{N}{2^i}-N=N-1} .

Αντώνης Πάπαρης έγραψε: Πηγαίνεις στην προηγούμενη γραμμή, παίρνεις το μεγαλύτερο στοιχείο (αυτό που "έχασε" από το μικρότερο), το ορίζεις ως τρέχων και ακολουθείς την πορεία του μικρότερου προς τα πίσω, συγκρίνοντας το "τρέχων" με το "μεγαλύτερο του ζεύγους" και ορίζοντας ως νέο τρέχων το μικρότερο. Έτσι βρίσκεις το 2ο μικρότερο με \lceil lg n \rceil − 1 συγκρίσεις.

Έτσι έχεις βρει το 2ο μικρότερο με n + \lceil lg n \rceil − 2 συγκρίσεις.
Οπότε για να βρούμε το 2ο μικρότερο στοιχείο, συγκρίνουμε όλους τους αριθμούς, ανά ζεύγη, οι οποίοι έχασαν από το μικρότερο, σωστά;

Πώς βρίσκουμε ότι το πλήθος των αριθμών αυτών ισούται με \lceil lg n \rceil ;


Mathletic
Δημοσιεύσεις: 275
Εγγραφή: Πέμ Μαρ 21, 2013 11:25 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#5

Μη αναγνωσμένη δημοσίευση από Mathletic » Τετ Σεπ 17, 2014 4:25 am

Mihalis_Lambrou έγραψε: Υπόδειξη: Αν έχεις n+1 αντικείμενα, βγάλε ένα. Μετά α) βρες το δεύτερο μικρότερο αντικείμενο των n που μένουν (θέλεις n + \lceil lg n\rceil − 2 συγκρίσεις το πολύ). β) Σύγκρινε αυτό που έβγαλες με το δεύτερο μικρότερο αντικείμενο των n (ίσον μία σύγκριση ακόμη). γ) Ρώτα τώρα τον εαυτό σου αν το σύνολο των συγκρίσεων που έκανες είναι μικρότερο ή ίσο του (n+1) + \lceil lg (n+1) \rceil − 2 .
Αν από τα n+1 αντικείμενα βγάλουμε ένα, ξέρουμε από την επαγωγική υπόθεση ότι χρειαζόμαστε n + \lceil lg n\rceil − 2 συγκρίσεις για να βρούμε το 2ο μεγαλύτερο.
Συγκρίνουμε το 2ο μικρότερο με το αντικείμενο που βγάλαμε. ( +1 σύγκριση ).
Αν το αντικείμενο που είχαμε βγάλει είναι μεγαλύτερο, τελειώσαμε.
Αν το αντικείμενο που είχαμε βγάλει είναι μικρότερο, πρέπει να συγκρίνουμε το αντικείμενο αυτό με το μικρότερο από τα n αντικείμενα ώστε να βρούμε το 2ο μικρότερο. ( +1 σύγκριση )


Συνολικά έχουμε το πολύ n + \lceil lg n\rceil − 2+1+1=n + \lceil lg n\rceil συγκρίσεις.

(n+1) + \lceil lg (n+1) \rceil − 2=n+ \lceil lg (n+1) \rceil − 1


n + \lceil lg n\rceil \leq n+ \lceil lg (n+1) \rceil-1 \Rightarrow \lceil lg n\rceil \leq \lceil lg (n+1) \rceil-1

\lceil lg n\rceil \leq \lceil lg (n+1) \rceil-1 \leq \lceil n+1 \rceil-1=n+1-1=n

Εφόσον ισχύει η ανισότητα \lceil lg n\rceil \leq n ισχύει έχουμε το πολύ (n+1) + \lceil lg (n+1) \rceil − 2 συγκρίσεις, σωστά;


Αντώνης Πάπαρης
Δημοσιεύσεις: 19
Εγγραφή: Κυρ Φεβ 09, 2014 1:27 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#6

Μη αναγνωσμένη δημοσίευση από Αντώνης Πάπαρης » Τετ Σεπ 17, 2014 9:59 am

Δεν χρειάζεται το Ν να είναι δύναμη του 2. Αν σε κάποιο βήμα δεν έχουμε άρτιο πλήθος το "τελευταίο" στοιχείο περνάει χωρίς σύγκριση. Αυτό οδηγεί σε "δέντρο" ύψους το πολύ \lceil lg n \rceil + 1

Το πλήθος των συγκρίσεων βγαίνει πολύ εύκολα. Με κάθε σύγκριση "φεύγει" ένα στοιχείο και για να "φύγει" ένα στοιχείο απαιτείται μία σύγκριση.
Αφού έχουμε Ν στοιχεία και έχει μείνει 1, σημαίνει ότι έχουν "φύγει" Ν-1 στοιχεία, άρα έχουν γίνει Ν-1 συγκρίσεις.


Mathletic έγραψε:
Αντώνης Πάπαρης έγραψε:Έστω ότι έχεις τοποθετημένους τους αριθμούς σε μια γραμμή
Δημιουργείς νέα γραμμή συγκρίνοντας τα στοιχεία: το 1 με το 2, το 3 με το 4 κοκ, και παίρνοντας το μικρότερο.
Συνεχίζεις μέχρι να φτάσεις να έχεις γραμμή με 1 στοιχείο

Μέχρι εδώ έχεις N-1 συγκρίσεις. Μόνο που έχεις βρει το μικρότερο.
Για να μπορούμε να συγκρίνουμε τα στοιχεία ανά ζεύγη υποθέτουμε ότι το πλήθος είναι δύναμη του 2 ;
Ή πρέπει να πάρουμε περιπτώσεις για το N ;


Θα πρέπει να αποδείξουμε ότι μέχρι εδώ έχουμε N-1 συγκρίσεις;

Μπορούμε να το δείξουμε ως εξής;

Στην πρώτη γραμμή συγκρίνουμε τους αριθμούς ανά ζεύγη, άρα έχουμε \frac{N}{2} συγκρίσεις.
Στην δεύτερη γραμμή έχουμε \frac{N}{2} αριθμούς, τους οποίους συγκρίνουμε ανά ζεύγη, άρα έχουμε \frac{N}{4} συγκρίσεις.
...
Στην προτελευταία γραμμή έχουμε 2 αριθμούς, άρα έχουμε μία σύγκριση.

Ο συνολικός αριθμός των συγκρίσεων ισούται με \displaystyle{\sum_{i=1}^{\log_2 N} \frac{N}{2^i}=\sum_{i=0}^{\log_2 N} \frac{N}{2^i}-N=N-1} .

Αντώνης Πάπαρης έγραψε: Πηγαίνεις στην προηγούμενη γραμμή, παίρνεις το μεγαλύτερο στοιχείο (αυτό που "έχασε" από το μικρότερο), το ορίζεις ως τρέχων και ακολουθείς την πορεία του μικρότερου προς τα πίσω, συγκρίνοντας το "τρέχων" με το "μεγαλύτερο του ζεύγους" και ορίζοντας ως νέο τρέχων το μικρότερο. Έτσι βρίσκεις το 2ο μικρότερο με \lceil lg n \rceil − 1 συγκρίσεις.

Έτσι έχεις βρει το 2ο μικρότερο με n + \lceil lg n \rceil − 2 συγκρίσεις.
Οπότε για να βρούμε το 2ο μικρότερο στοιχείο, συγκρίνουμε όλους τους αριθμούς, ανά ζεύγη, οι οποίοι έχασαν από το μικρότερο, σωστά;

Πώς βρίσκουμε ότι το πλήθος των αριθμών αυτών ισούται με \lceil lg n \rceil ;


Mathletic
Δημοσιεύσεις: 275
Εγγραφή: Πέμ Μαρ 21, 2013 11:25 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#7

Μη αναγνωσμένη δημοσίευση από Mathletic » Παρ Σεπ 19, 2014 2:09 am

Αντώνης Πάπαρης έγραψε:Δεν χρειάζεται το Ν να είναι δύναμη του 2. Αν σε κάποιο βήμα δεν έχουμε άρτιο πλήθος το "τελευταίο" στοιχείο περνάει χωρίς σύγκριση. Αυτό οδηγεί σε "δέντρο" ύψους το πολύ \lceil lg n \rceil + 1
Πώς συμπεραίνουμε ότι το ύψος του δέντρου είναι το πολύ \lceil lg n \rceil + 1 ;
Αντώνης Πάπαρης έγραψε: Το πλήθος των συγκρίσεων βγαίνει πολύ εύκολα. Με κάθε σύγκριση "φεύγει" ένα στοιχείο και για να "φύγει" ένα στοιχείο απαιτείται μία σύγκριση.
Αφού έχουμε Ν στοιχεία και έχει μείνει 1, σημαίνει ότι έχουν "φύγει" Ν-1 στοιχεία, άρα έχουν γίνει Ν-1 συγκρίσεις.
Κατάλαβα!
Ο τρόπος με τον οποίο το απέδειξα εγώ είναι λάθος;


Δεν έχω καταλάβει ακόμα γιατί το πλήθος των αριθμών για το 2ο μικρότερο ισούται με \lceil lg n \rceil.


Mathletic έγραψε: Θα πρέπει να αποδείξουμε ότι μέχρι εδώ έχουμε N-1 συγκρίσεις;

Μπορούμε να το δείξουμε ως εξής;

Στην πρώτη γραμμή συγκρίνουμε τους αριθμούς ανά ζεύγη, άρα έχουμε \frac{N}{2} συγκρίσεις.
Στην δεύτερη γραμμή έχουμε \frac{N}{2} αριθμούς, τους οποίους συγκρίνουμε ανά ζεύγη, άρα έχουμε \frac{N}{4} συγκρίσεις.
...
Στην προτελευταία γραμμή έχουμε 2 αριθμούς, άρα έχουμε μία σύγκριση.

Ο συνολικός αριθμός των συγκρίσεων ισούται με \displaystyle{\sum_{i=1}^{\log_2 N} \frac{N}{2^i}=\sum_{i=0}^{\log_2 N} \frac{N}{2^i}-N=N-1} .

Αντώνης Πάπαρης έγραψε: Πηγαίνεις στην προηγούμενη γραμμή, παίρνεις το μεγαλύτερο στοιχείο (αυτό που "έχασε" από το μικρότερο), το ορίζεις ως τρέχων και ακολουθείς την πορεία του μικρότερου προς τα πίσω, συγκρίνοντας το "τρέχων" με το "μεγαλύτερο του ζεύγους" και ορίζοντας ως νέο τρέχων το μικρότερο. Έτσι βρίσκεις το 2ο μικρότερο με \lceil lg n \rceil − 1 συγκρίσεις.

Έτσι έχεις βρει το 2ο μικρότερο με n + \lceil lg n \rceil − 2 συγκρίσεις.
Οπότε για να βρούμε το 2ο μικρότερο στοιχείο, συγκρίνουμε όλους τους αριθμούς, ανά ζεύγη, οι οποίοι έχασαν από το μικρότερο, σωστά;

Πώς βρίσκουμε ότι το πλήθος των αριθμών αυτών ισούται με \lceil lg n \rceil ;


Αντώνης Πάπαρης
Δημοσιεύσεις: 19
Εγγραφή: Κυρ Φεβ 09, 2014 1:27 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#8

Μη αναγνωσμένη δημοσίευση από Αντώνης Πάπαρης » Παρ Σεπ 19, 2014 10:11 am

Mathletic έγραψε: Πώς συμπεραίνουμε ότι το ύψος του δέντρου είναι το πολύ \lceil lg n \rceil + 1 ;
Προσπάθησε να το αποδείξεις.
Υπόδειξη: Γιατί σκέφτηκες ότι το Ν είναι δύναμη του 2 για να συνεχίσεις την απόδειξη? Σε τι σε βοήθησε? Θα μπορούσες να χρησιμοποιήσεις κάποια δύναμη του 2 για να φτάσεις στο αποτέλεσμα?
Mathletic έγραψε: Ο τρόπος με τον οποίο το απέδειξα εγώ είναι λάθος;
Πρόσθεσες \frac{N}{2} + \frac{N}{4} κοκ
Αυτοί είναι ακέραιοι? Δουλεύει ο τρόπος σου αν αυτοί δεν είναι ακέραιοι?
Mathletic έγραψε: Δεν έχω καταλάβει ακόμα γιατί το πλήθος των αριθμών για το 2ο μικρότερο ισούται με \lceil lg n \rceil.
Το πλήθος των συγκρίσεων εννοείς. Μάλλον δεν έχεις καταλάβει το "τελευταίο βήμα".

Για να το "δεις" κάνε ένα σχέδιο με 13 αριθμούς (για να καταλάβεις και γιατί το μήκος είναι \lceil lg n \rceil + 1). Πάρε τυχαίους αριθμούς (για να σου είναι πιο εύκολο, να μην έχει δύο φορές τον ίδιο αριθμό) και δοκίμασε πως δουλεύει.


Άβαταρ μέλους
Demetres
Γενικός Συντονιστής
Δημοσιεύσεις: 9010
Εγγραφή: Δευ Ιαν 19, 2009 5:16 pm
Τοποθεσία: Λεμεσός/Πύλα
Επικοινωνία:

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#9

Μη αναγνωσμένη δημοσίευση από Demetres » Παρ Σεπ 19, 2014 11:39 am

Ίσως βοηθάει να το δούμε επαγωγικά. (Ουσιαστικά όμως είναι ο ίδιος αλγόριθμος με του Αντώνη.)

Θα δείξω ότι με το πολύ \displaystyle{ n + \lceil \log_2{n}\rceil - 2} συγκρίσεις μπορώ να βρω το μικρότερο και το δεύτερο μικρότερο στοιχείο. Αυτό είναι άμεσο για n=2. Έστω λοιπόν ότι ισχύει για κάθε k < n.

Αν n=2m τα χωρίζω σε m ζεύγη και κάνω m συγκρίσεις. Από κάθε σύγκριση παίρνω τον μικρότερο αριθμό. Επαγωγικά, με το πολύ m + \lceil \log_2{m}\rceil - 2 συγκρίσεις βρίσκω το μικρότερο και το δεύτερο μικρότερο στοιχείο αυτών των αριθμών, έστω τα x,y με x<y. Έστω επίσης ότι στις πρώτες m συγκρίσεις συγκρίθηκε το x με το x' και το y με το y'. Τότε το μικρότερο στοιχείο του αρχικού συνόλου είναι το x ενώ το δεύτερο μικρότερο στοιχείο είναι είτε το y είτε το x'. Με μία επιπλέον σύγκριση μπορούμε να βρούμε ποιο από το δύο είναι. Συνολικά κάναμε

\displaystyle{m + (m + \lceil \log_2{m}\rceil - 2) + 1 = 2m +  \lceil \log_2{m} + 1\rceil -2 = n + \lceil \log_2{n}\rceil - 2} συγκρίσεις.

Με παρόμοιο τρόπο, αν n=2m+1 τα χωρίζω σε m ζεύγη και αφήνω ένα στοιχείο μόνο του, κάνω m συγκρίσεις και παίρνω τα ελαφρύτερα μαζί με εκείνο που άφησα μόνο του, μετά βρίσκω με (m+1) + \lceil \log_2{(m+1)}\rceil - 2 συγκρίσεις το ελαφρύτερο και το δεύτερο ελαφρύτερο από αυτά τα m+1 και τέλος με το πολύ άλλη μία σύγκριση βρίσκω το ελαφρύτερο και το δεύτερο ελαφρύτερο του αρχικού συνόλου. Συνολικά έκανα

\displaystyle{m + (m+1 + \lceil \log_2{(m+1)}\rceil - 2) + 1 = 2m+1 +  \lceil \log_2{(m+1)} + 1\rceil -2 =n + \lceil \log_2{n}\rceil - 2} συγκρίσεις.

Στην τελευταία ισότητα, επειδή ο m είναι φυσικός, έχω \lceil \log_2{(2m+2)} \rceil = \lceil \log_2{(2m+1)} \rceil


Άβαταρ μέλους
Demetres
Γενικός Συντονιστής
Δημοσιεύσεις: 9010
Εγγραφή: Δευ Ιαν 19, 2009 5:16 pm
Τοποθεσία: Λεμεσός/Πύλα
Επικοινωνία:

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#10

Μη αναγνωσμένη δημοσίευση από Demetres » Παρ Σεπ 19, 2014 11:55 am

Mihalis_Lambrou έγραψε:
Mathletic έγραψε: Πώς μπορώ να συνεχίσω και να αποδείξω ότι αν έχουμε n+1 στοιχεία, χρειαζόμαστε (n+1) + \lceil lg (n+1) \rceil − 2 συγκρίσεις για την εύρεση του δεύτερου μικρότερου στοιχείου;
Είναι πολύ απλό.

Υπόδειξη: Αν έχεις n+1 αντικείμενα, βγάλε ένα. Μετά α) βρες το δεύτερο μικρότερο αντικείμενο των n που μένουν (θέλεις n + \lceil lg n\rceil − 2 συγκρίσεις το πολύ). β) Σύγκρινε αυτό που έβγαλες με το δεύτερο μικρότερο αντικείμενο των n (ίσον μία σύγκριση ακόμη). γ) Ρώτα τώρα τον εαυτό σου αν το σύνολο των συγκρίσεων που έκανες είναι μικρότερο ή ίσο του (n+1) + \lceil lg (n+1) \rceil − 2 .
Μιχάλη, αυτό δεν είναι σωστό. Στο (β), αν αυτό που έβγαλες έξω είναι ελαφρύτερο από το δεύτερο μικρότερο αντικείμενο τότε πρέπει να το συγκρίνεις και με το μικρότερο αντικείμενο των n. Τότε όμως ουσιαστικά αυτός ο αλγόριθμος θα θέλει στην χειρότερη περίπτωση 2n-3 συγκρίσεις. (Δύο επιπλέον συγκρίσεις για κάθε επιπλέον στοιχείο.)


Mathletic
Δημοσιεύσεις: 275
Εγγραφή: Πέμ Μαρ 21, 2013 11:25 pm

Re: Υπολογισμός δεύτερου μικρότερου στοιχείου

#11

Μη αναγνωσμένη δημοσίευση από Mathletic » Παρ Σεπ 19, 2014 2:25 pm

Demetres έγραψε:Ίσως βοηθάει να το δούμε επαγωγικά. (Ουσιαστικά όμως είναι ο ίδιος αλγόριθμος με του Αντώνη.)

Θα δείξω ότι με το πολύ \displaystyle{ n + \lceil \log_2{n}\rceil - 2} συγκρίσεις μπορώ να βρω το μικρότερο και το δεύτερο μικρότερο στοιχείο. Αυτό είναι άμεσο για n=2. Έστω λοιπόν ότι ισχύει για κάθε k < n.

Αν n=2m τα χωρίζω σε m ζεύγη και κάνω m συγκρίσεις. Από κάθε σύγκριση παίρνω τον μικρότερο αριθμό. Επαγωγικά, με το πολύ m + \lceil \log_2{m}\rceil - 2 συγκρίσεις βρίσκω το μικρότερο και το δεύτερο μικρότερο στοιχείο αυτών των αριθμών, έστω τα x,y με x<y. Έστω επίσης ότι στις πρώτες m συγκρίσεις συγκρίθηκε το x με το x' και το y με το y'. Τότε το μικρότερο στοιχείο του αρχικού συνόλου είναι το x ενώ το δεύτερο μικρότερο στοιχείο είναι είτε το y είτε το x'. Με μία επιπλέον σύγκριση μπορούμε να βρούμε ποιο από το δύο είναι. Συνολικά κάναμε

\displaystyle{m + (m + \lceil \log_2{m}\rceil - 2) + 1 = 2m +  \lceil \log_2{m} + 1\rceil -2 = n + \lceil \log_2{n}\rceil - 2} συγκρίσεις.

Με παρόμοιο τρόπο, αν n=2m+1 τα χωρίζω σε m ζεύγη και αφήνω ένα στοιχείο μόνο του, κάνω m συγκρίσεις και παίρνω τα ελαφρύτερα μαζί με εκείνο που άφησα μόνο του, μετά βρίσκω με (m+1) + \lceil \log_2{(m+1)}\rceil - 2 συγκρίσεις το ελαφρύτερο και το δεύτερο ελαφρύτερο από αυτά τα m+1 και τέλος με το πολύ άλλη μία σύγκριση βρίσκω το ελαφρύτερο και το δεύτερο ελαφρύτερο του αρχικού συνόλου. Συνολικά έκανα

\displaystyle{m + (m+1 + \lceil \log_2{(m+1)}\rceil - 2) + 1 = 2m+1 +  \lceil \log_2{(m+1)} + 1\rceil -2 =n + \lceil \log_2{n}\rceil - 2} συγκρίσεις.
Πολύ ωραία :first: Το κατάλαβα!
Demetres έγραψε: Στην τελευταία ισότητα, επειδή ο m είναι φυσικός, έχω \lceil \log_2{(2m+2)} \rceil = \lceil \log_2{(2m+1)} \rceil
Μπορείτε να μου εξηγήσετε περαιτέρω γιατί ισχύει η ισότητα \lceil \log_2{(2m+2)} \rceil = \lceil \log_2{(2m+1)} \rceil ;


Απάντηση

Επιστροφή σε “Μαθηματική Λογική & Θεμέλια Μαθηματικών”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης