Καλύτερη αυτο-εξισορρόπησης BST για γρήγορη εισαγωγή μεγάλου αριθμού των κόμβων




Ήμουν σε θέση να βρείτε λεπτομέρειες σχετικά με διάφορες αυτο-εξισορρόπησης `BST`s μέσα από διάφορες πηγές, αλλά δεν έχω βρει κάποιες καλές περιγραφές λεπτομερώς ποια είναι η καλύτερη για χρήση σε διαφορετικές καταστάσεις (ή, αν πραγματικά δεν έχει σημασία). 


Θέλω ένα `BST`που είναι η βέλτιστη για την αποθήκευση πάνω από δέκα εκατομμύρια κόμβους. Η σειρά εισαγωγής των κόμβων είναι βασικά τυχαία, και ποτέ δεν θα χρειαστεί να διαγράψετε κόμβους, έτσι ώστε ο χρόνος εισαγωγής είναι το μόνο πράγμα που θα πρέπει να βελτιστοποιηθεί. 


Έχω την πρόθεση να το χρησιμοποιήσει για να αποθηκεύσει προηγουμένως επισκεφθεί κρατών παιχνίδι σε ένα παιχνίδι παζλ, έτσι ώστε να μπορώ να ελέγξετε γρήγορα αν έχει ήδη αντιμετώπισε μια προηγούμενη ρύθμιση.
[Κόκκινο-μαύρο](http://en.wikipedia.org/wiki/Red-black_tree) είναι καλύτερο από το AVL για την εισαγωγή-βαριές εφαρμογές. Αν έχετε προβλέψει σχετικά ομοιόμορφη εμφάνιση-up, στη συνέχεια, κόκκινο-μαύρο είναι ο τρόπος να πάει. Αν έχετε προβλέψει μια σχετικά ισορροπημένη ματιά-up, όπου θεωρείται πιο πρόσφατα στοιχεία είναι πιο πιθανό να είναι ορατό και πάλι, θέλετε να χρησιμοποιήσετε [τα δέντρα άτεχνος](http://en.wikipedia.org/wiki/Splay_tree) .
να φτιάξετε το αυτόματο πότισμα και αντί να ποτίζετε με μεγάλη παροχή νερού πχ 5 λεπτά να ποτίζετε με μικρή παροχή νερού πχ 10 λεπτά. μόνο στην περίπτωση που τα μπεκ ποτίσματος είναι πάρα πολλά και δεν σταλάζουν όλα , μόνο τότε θα ενδιαφερθείτε για μεγαλύτερη παροχή νερού ή για δύο γραμμές ποτίσματος με διαδοχικό πότισμα. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. μπορείτε να βάλετε θερμοστατικούς διακόπτες σε κάθε σώμα ξεχωριστά, χωρίς άλλες μετατροπές. διαφορετικά πόσες ηλεκτροβάνες και πού δεν μπορώ να σας υποδείξω χωρίς να έχω μια εικόνα της εγκατάστασης ίσως όμως το πιο απλό είναι να μεταφέρετε τον θερμοστάτη σε άλλη θέση. ή με χρονοδιακόπτη κάποιες ώρες να είναι συνέχεια ον ενώ κάποιες άλλες να ανοιγοκλείνει βάσει της θερμοκρασίας που είναι ρυθμισμένος για την νύκτα πχ 17 βαθμούς. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. <p>δεν περιγράφετε κλίμακα για να ταιριάζει. περιγράφεις την εμφάνιση. (έχω επεξεργαστεί την ερώτησή σας σε αυτό το θέμα.) η υποβολή γίνεται όσο το δυνατόν μεγαλύτερη, διατηρώντας παράλληλα την αναλογία της και προσαρμόζοντας εξ ολοκλήρου μέσα στον γονέα της.</p><p>τέλος πάντων, μπορείτε να το κάνετε αυτό με αυτόματη διάταξη. μπορείτε να το κάνετε εξ ολοκλήρου στο ib από xcode 5.1. ας ξεκινήσουμε με μερικές προβολές:</p><p><img src="https://i.stack.imgur.com/hhdxr.png" alt="some views"></p><p>η ανοιχτή πράσινη όψη έχει αναλογία διαστάσεων 4: 1. η σκούρα πράσινη προβολή έχει αναλογία διαστάσεων 1: 4. πρόκειται να δημιουργήσω περιορισμούς έτσι ώστε η μπλε όψη να γεμίζει το πάνω μισό της οθόνης, η ροζ όψη να γεμίζει το κάτω μισό της οθόνης και κάθε πράσινη προβολή να επεκτείνεται όσο το δυνατόν περισσότερο, διατηρώντας παράλληλα τον λόγο διαστάσεων και προσαρμόζοντας την δοχείο.</p><p>κατ 'αρχάς, θα δημιουργήσω περιορισμούς και στις τέσσερις πλευρές της μπλε όψης. θα το περάσω στον κοντινότερο γείτονα σε κάθε άκρη, με απόσταση 0. φροντίζω να απενεργοποιήσω τα περιθώρια:</p><p><img src="https://i.stack.imgur.com/yo2jf.gif" alt="blue constraints"></p><p>σημειώστε ότι το i <strong> δεν ενημερώνει </strong> το πλαίσιο ακόμα. θεωρώ ότι είναι ευκολότερο να αφήνετε χώρο μεταξύ των απόψεων κατά τη δημιουργία περιορισμών και απλά να ορίσετε τις σταθερές στο 0 (ή οτιδήποτε άλλο) με το χέρι.</p><p>στη συνέχεια, κλίνω το αριστερό, το κάτω και το δεξί άκρο της ροζ εικόνας στον πλησιέστερο γείτονά της. δεν χρειάζεται να ρυθμίσω έναν ανώτατο περιορισμό edge επειδή η άνω άκρη του είναι ήδη περιορισμένη στο κάτω άκρο της μπλε όψης.</p><p><img src="https://i.stack.imgur.com/spins.gif" alt="pink constraints"></p><p>χρειάζομαι επίσης έναν περιορισμό ισοδύναμων μεταξύ των ροζ και μπλε απόψεων. αυτό θα τους κάνει να γεμίσουν το ήμισυ της οθόνης:</p><p><img src="https://i.stack.imgur.com/oelrv.gif" alt="enter image description here"></p><p>αν λέω στο xcode να ενημερώσει όλα τα πλαίσια τώρα, έχω αυτό:</p><p><img src="https://i.stack.imgur.com/9fbwl.png" alt="containers laid out"></p><p>έτσι, οι περιορισμοί που έχω δημιουργήσει μέχρι τώρα είναι σωστοί. ανεξάρτητα από αυτό και να αρχίσετε να εργάζεστε με την ανοιχτό πράσινη όψη.</p><p>η τοποθέτηση σε πτυχές της ανοιχτής πράσινης προβολής απαιτεί πέντε περιορισμούς:</p><ul> <li>απαιτούμενος λόγος αναλογίας διαστάσεων προτεραιότητας στην ανοιχτό πράσινη όψη. μπορείτε να δημιουργήσετε αυτόν τον περιορισμό σε xib ή storyboard με xcode 5.1 ή νεότερη έκδοση.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το πλάτος της ανοιχτό πράσινης όψης να είναι μικρότερο ή ίσο με το πλάτος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που καθορίζει το πλάτος της ανοιχτής πράσινης όψης να είναι ίσο με το πλάτος του δοχείου.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το ύψος της ανοιχτής πράσινης όψης να είναι μικρότερο ή ίσο με το ύψος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που θέτει το ύψος της ανοιχτής πράσινης όψης να είναι ίσο με το ύψος του δοχείου.</li> </ul><p>ας εξετάσουμε τους δύο περιορισμούς πλάτους. ο περιορισμός που δεν είναι ο ίδιος, είναι επαρκής για να καθορίσει το πλάτος της ανοιχτής πράσινης όψης. πολλά πλάτη θα ταιριάζουν με τον περιορισμό. δεδομένου ότι υπάρχει ασάφεια, το autolayout θα προσπαθήσει να επιλέξει μια λύση που ελαχιστοποιεί το σφάλμα στον άλλο περιορισμό (υψηλής προτεραιότητας αλλά όχι υποχρεωτικό). η ελαχιστοποίηση του σφάλματος σημαίνει ότι το πλάτος είναι όσο το δυνατόν πλησιέστερο στο πλάτος του κιβωτίου, ενώ δεν παραβιάζεται ο απαιτούμενος περιορισμός που δεν είναι μικρός ή ίσος.</p><p>το ίδιο συμβαίνει και με τον περιορισμό του ύψους. και επειδή απαιτείται επίσης ο περιορισμός της αναλογίας πλευρών, μπορεί να μεγιστοποιηθεί το μέγεθος του υποβιβασμού κατά μήκος ενός άξονα (εκτός αν ο περιέκτης έχει την ίδια αναλογία διαστάσεων με την υποέκθεση).</p><p>έτσι πρώτα δημιουργώ τον περιορισμό της αναλογίας διαστάσεων:</p><p><img src="https://i.stack.imgur.com/4ihow.gif" alt="top aspect"></p><p>στη συνέχεια, δημιουργώ ίσους περιορισμούς πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/vycag.gif" alt="top equal size"></p><p>πρέπει να επεξεργαστώ αυτούς τους περιορισμούς ώστε να είναι λιγότερο από-ή-ίσους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/bc7rh.gif" alt="top less than or equal size"></p><p>στη συνέχεια πρέπει να δημιουργήσω ένα άλλο σύνολο ίσων περιορισμών πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/u9hkm.gif" alt="top equal size again"></p><p>και πρέπει να θέσω τους νέους αυτούς περιορισμούς λιγότερο από την απαιτούμενη προτεραιότητα:</p><p><img src="https://i.stack.imgur.com/i7dte.gif" alt="top equal not required"></p><p>τελικά, ζητήσατε να είναι κεντραρισμένο το υποπεριοχή στο δοχείο του, οπότε θα ρυθμίσω αυτούς τους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/4dtr1.gif" alt="top centered"></p><p>τώρα, για να δοκιμάσετε, θα επιλέξω τον ελεγκτή προβολής και θα ζητήσω από το xcode να ενημερώσει όλα τα πλαίσια. αυτό έχω:</p><p><img src="https://i.stack.imgur.com/kmtoy.png" alt="incorrect top layout"></p><p>ωχ! το subview έχει επεκταθεί για να γεμίσει πλήρως το δοχείο του. αν το επιλέξω, μπορώ να δω ότι στην πραγματικότητα διατηρείται η αναλογία του, αλλά κάνει μια πτυχή - <strong> συμπληρώστε </strong> αντί για μια πτυχή - <strong> ταιριάζει </strong>.</p><p>το πρόβλημα είναι ότι σε έναν λιγότερο από ή ίσο περιορισμό, έχει σημασία ποια είναι η άποψη σε κάθε άκρο του περιορισμού, και το xcode έχει δημιουργήσει τον περιορισμό απέναντι από την προσδοκία μου. θα μπορούσα να επιλέξω καθέναν από τους δύο περιορισμούς και να αντιστρέψω το πρώτο και δεύτερο στοιχείο. αντ 'αυτού, θα επιλέξω μόνο το subview και θα αλλάξω τους περιορισμούς ώστε να είναι μεγαλύτερο από-ή-ίσο:</p><p><img src="https://i.stack.imgur.com/mh4xm.gif" alt="fix top constraints"></p><p>το xcode ενημερώνει τη διάταξη:</p><p><img src="https://i.stack.imgur.com/srvqg.png" alt="correct top layout"></p><p>τώρα κάνω όλα τα ίδια πράγματα με τη σκούρα πράσινη θέα στο κάτω μέρος. πρέπει να σιγουρευτώ ότι η αναλογία πλευρών είναι 1: 4 (το xcode το μείωσε με περίεργο τρόπο αφού δεν είχε περιορισμούς). δεν θα δείξω τα βήματα ξανά, αφού είναι τα ίδια. εδώ είναι το αποτέλεσμα:</p><p><img src="https://i.stack.imgur.com/kdj1r.png" alt="correct top and bottom layout"></p><p>τώρα μπορώ να το εκτελέσω στον προσομοιωτή iphone 4s, ο οποίος έχει διαφορετικό μέγεθος οθόνης από τον ib που χρησιμοποιείται και δοκιμή περιστροφής:</p><p><img src="https://i.stack.imgur.com/hpa6w.gif" alt="iphone 4s test"></p><p>και μπορώ να δοκιμάσω στο iphone 6 προσομοιωτή:</p><p><img src="https://i.stack.imgur.com/otbq9.gif" alt="iphone 6 test"></p><p>έχω ανεβάσει τον τελικό πίνακα ιστορικού μου στο <a href="https://gist.github.com/mayoff/d9320088ab4025c95e40">αυτό το gist</a> για την ευκολία σας.</p> αν έχετε μονοκατοικία και κλείσετε κάποια σώματα τότε θα έχετε και την αντίστοιχη οικονομία αν είσαστε όμως σε πολυκατοικία χωρίς θερμιδομέτρηση τότε την οικονομία αυτή θα την επωφεληθούν όλοι αναλογικά την κατανάλωση πετρελαίου σε μία ώρα συνεχόμενης λειτουργίας είναι πιο εύκολο να την υπολογίσετε εσείς με την μέτρηση της στάθμης της δεξαμενής. διαφορετικά πρέπει να γνωρίζουμε το μπέκ του καυστήρα και την πίεση του , το αν είναι στους 75 ή στους 50 ή στους 80 βαθμούς ο θερμοστάτης δεν έχει από μόνο του τόση σημασία όση σε συνδυασμό με τις εξωτερικές καιρικές συνθήκες. . τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. εγω χρησιμοποιώ τα etosha. χρησιμοποίησα 2-3 φορες τα pyrsos αλλά εκτός του οτι δεν ανάβουν ευκολα δεν διατηρούνται σχεδόν καθόλου. ποσότητα θα βάλεις αναλόγως του τι θα ψήσεις. αν ειναι σούβλα και θα έχεις 3 σμίλες τότε θα βάλεις σχεδόν το μισό σακούλι κάρβουνα. σουβλάκια με όλες τις σμίλες θα βάλεις περίπου το 1/3 της σακούλλας. αν θα κάνεις πιο λίγο κρεας μειώνεις και τα κάρβουνα. λοιπόν αν κατάλαβα σωστά η διαρροή εμφανίζεται στην βαλβίδα του κλειστού κυκλώματος. σε αυτή την περίπτωση θα περιμένετε μερικές ημέρες για να δείτε αν η διαρροή σταματήσει δεδομένου ότι μετά από πλήρες γέμισμα του κλειστού κυκλώματος έχουμε μερικές φορές λόγω διαστολών διαρροή από την βαλβίδα αυτή. σε αυτή την περίπτωση μετά από μερικές μέρες θα σταματήσει . αν όμως συνεχίσει τότε έχουμε διαρροή νερού (σε αρχικό στάδιο) από το νερό χρήσης προς το κλειστό κύκλωμα και αυτή η διαρροή σταδιακά θα αυξηθεί , αυτή η διαρροή αλειώνει την αναλογία αντιψυκτικού με αποτέλεσμα να μη υπάρχει η αναγκαία προστασία των συλλεκτών σε περίπτωση παγετού και η μόνη λύση είναι η αντικατάσταση του μπόιλερ, και σε αυτή την περίπτωση θέλει προσοχή μην μπεί μεγαλύτερη βαλβίδα ασφαλείας γιατί κινδυνεύουν να τρυπήσουν οι συλλέκτες από την πίεση του νερού χρήσης. τρουλλινός γιώργος, υδραυλικός, 6932860310. απλά θα επιμερίσετε τις δαπάνες με τον απλό τρόπο που κάνουμε όταν δεν έχουμε από μηχανικό τον πίνακα με τους συντελεστές επιβάρυνσης. τρουλλινός γιώργος 6932860310 Αυτή είναι η γνώμη μου, αλλά? όπως ακριβώς και οι τάξεις περίπτωση δεν, θα ήθελα να εφαρμόσουν μια `copy`μέθοδο του είδους στην τάξη για να καταστεί δυνατή η τροποποίηση, διατηρώντας παράλληλα το αμετάβλητο, αλλά υπάρχει ορισμένες περιπτώσεις που δεν μπορώ να βοηθήσω να το μεταβλητό? Για παράδειγμα, όταν κάτι αναμένεται να γίνει η λειτουργία αντιγραφής είναι πολύ μεγάλη και αργή για την κατηγορία? όπως όταν η τάξη έχει τόσα πολλά συχνά τροποποιημένο μέλη. Και μην ανησυχείτε για χιλιάδες περιπτώσεις που επιπλέουν γύρω στη μνήμη, επειδή είναι αυτόματα GC'ed, οπότε το πιο πραγματικό πρόβλημα είναι ο χρόνος κόστος της αντιγραφής περιπτώσεις της κλάσης. Παρακαλώ πείτε μου εάν η γνώμη μου είναι κάπως λάθος :) αυτό με μπερδεύει (σε παραλληλη συνδεση με 5 σωματα στη σειρα). αν είναι μονοσωλήνιο να βάλετε τα μεγάλα σώματα ή μόνα ή με ένα μικρότερο σε ένα βρόγχο με φ16 ή φ18 από το κολεκτέρ , αν είναι δισωλήνιο μέχρι να φτάσει το ζευγάρι παροχή/επιστροφή στο 3ο σώμα με φ22 και μετά τα άλλα 2 με φ 18. και από το ζευγάρι παροχή/επιστροφή μέχρι τα σώματα δηλαδή 1-2 μέτρα με φ15. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. πρακτικά και εφόσον ο αυτόματος πλήρωσης δεν έχει χαλάσει μπορούμε να τον ρυθμίσουμε πχ στα 1,80 bar αφού πρώτα αδειάσουμε νερό από την βάνα αδειάσματος του λέβητα τόσο ώστε να πέσει η πίεση πιο κάτω από αυτή που θέλουμε να βάλουμε πχ στα 1,5 bar τότε αφού βεβαιωθούμε ότι ο αυτόματος πλήρωσης βάζει νερό τον παρατηρούμε ώστε όταν η πίεση φτάσει εκεί που θέλουμε πχ στα 1,80 bar τότε γυρίζουμε την βίδα ρύθμισης του προς το πλην, ώστε ίσα – ίσα να πάψει να βάζει νερό, και αν θέλουμε για επιβεβαίωση αδειάζουμε πάλι το νερό μέχρι τα 1,5 bar και περιμένουμε να ξαναμπεί νερό μέχρι τα 1,80 bar. τώρα όταν το νερό ζεσταθεί η πίεση δεν πρέπει να αυξηθεί παραπάνω από τα 0.5 – 0,7 bar, διαφορετικά το δοχείο διαστολής δεν έχει την κατάλληλη ποσότητα αέρα. γενικά και πρακτικά το κλειστό δοχείο διαστολής του καλοριφέρ πρέπει να έχει τόσο αέρα μέσα ώστε όταν το νερό στον λέβητα είναι κρύο τότε το δοχείο διαστολής να έχει ελάχιστο νερό μέσα του, δηλαδή αν το σηκώσουμε ή το σπρώξουμε να καταλάβουμε ότι έχει λίγο παραπάνω βάρος από ότι όταν ήταν ασύνδετο. προσοχή όμως λίγο παραπάνω βάρος και όχι καθόλου. όσο για την βαλβίδα ασφαλείας αυτή ua πρέπει να ανοίγει όταν η πίεση αυξηθεί πάνω από τα 2,5 bar τρουλλινός γιώργος, υδραυλικός, 6932860310.