คำถามติดแท็ก balanced-search-trees

4
ทำไมต้นไม้สีแดงดำจึงเป็นที่นิยม
ดูเหมือนว่าทุกที่ที่ฉันมองมีการใช้โครงสร้างข้อมูลโดยใช้ต้นไม้สีแดงดำ ( std::setใน C ++, SortedDictionaryใน C #, ฯลฯ ) มีต้นไม้ปกคลุม (a, b), สีแดง - ดำและ AVL ในชั้นเรียนอัลกอริทึมของฉันนี่คือสิ่งที่ฉันได้ออกไป (จากการถามอาจารย์, มองผ่านหนังสือสองสามเล่มและ googling เล็กน้อย): ต้นไม้ AVL มีความลึกเฉลี่ยน้อยกว่าต้นไม้สีแดงดำดังนั้นการค้นหาค่าในต้นไม้ AVL จึงเร็วขึ้นอย่างต่อเนื่อง ต้นไม้สีแดงดำทำการเปลี่ยนแปลงโครงสร้างน้อยกว่าเพื่อความสมดุลตัวเองมากกว่าต้นไม้ AVL ซึ่งอาจทำให้พวกเขาเร็วขึ้นสำหรับการแทรก / ลบ ฉันกำลังพูดถึงสิ่งที่อาจเกิดขึ้นเพราะสิ่งนี้จะขึ้นอยู่กับต้นทุนของการเปลี่ยนแปลงโครงสร้างของต้นไม้เนื่องจากมันจะขึ้นอยู่กับรันไทม์และการดำเนินการ (อาจแตกต่างกันโดยสิ้นเชิงในภาษาที่ใช้งานได้เมื่อต้นไม้ไม่เปลี่ยนรูป) มีมาตรฐานออนไลน์มากมายที่เปรียบเทียบ AVL กับต้นไม้สีแดง - ดำ แต่สิ่งที่ทำให้ฉันสะดุดคือศาสตราจารย์ของฉันพูดโดยทั่วไปว่าโดยปกติคุณจะทำสองอย่าง: ไม่ว่าคุณจะไม่สนใจเรื่องประสิทธิภาพมากนักซึ่งในกรณีนี้ความแตกต่างระหว่าง 10-20% ของ AVL กับสีแดง - ดำในกรณีส่วนใหญ่ไม่สำคัญเลย หรือคุณสนใจเกี่ยวกับการแสดงอย่างมากในกรณีที่คุณทิ้งทั้งต้นไม้ AVL และต้นไม้สีแดงดำและไปกับต้นไม้ …

1
ลองจินตนาการถึงต้นไม้สีแดงดำ มีลำดับการแทรกและการลบที่สร้างขึ้นหรือไม่
สมมติว่านิยามของต้นไม้สีแดงดำดังต่อไปนี้ มันเป็นต้นไม้ค้นหาแบบไบนารี แต่ละโหนดมีสีทั้งสีแดงหรือสีดำ รากมีสีดำ สองโหนดที่เชื่อมต่อด้วยขอบไม่สามารถเป็นสีแดงได้ในเวลาเดียวกัน นี่ควรเป็นคำจำกัดความที่ดีของใบไม้ NIL เช่นเดียวกับบนวิกิ ใบไม้ NIL เป็นสีดำ เส้นทางจากรูตไปยังใบไม้ NIL ใด ๆ มีจำนวนโหนดดำจำนวนเท่ากัน คำถาม สมมติว่าคุณได้ใช้งานinsertและdeleteการดำเนินการสำหรับต้นไม้สีแดงดำ ทีนี้ถ้าคุณได้รับต้นไม้สีแดงดำที่ถูกต้องจะมีลำดับinsertและdeleteการดำเนินการที่สร้างไว้หรือไม่ แรงจูงใจ คำถามนี้กระตุ้นโดยคำถามนี้และจากการสนทนาจากคำถามนี้ โดยส่วนตัวแล้วฉันเชื่อว่าถ้าคุณจินตนาการถึงต้นไม้สีแดงดำที่ถูกต้องซึ่งประกอบด้วยเพียงโหนดสีดำ (ซึ่งหมายความว่าคุณกำลังจินตนาการต้นไม้ที่สมดุลอย่างสมบูรณ์) มีลำดับinsertและdeleteการดำเนินการที่สร้างมันขึ้นมา อย่างไรก็ตาม ฉันไม่ทราบวิธีที่จะพิสูจน์ได้อย่างถูกต้องว่า ฉันยังสนใจในกรณีทั่วไปมากขึ้น

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

1
ต้นไม้ AVL ไม่ได้มีความสมดุลของน้ำหนัก?
ในคำถามก่อนหน้านี้มีคำจำกัดความของต้นไม้สมดุลน้ำหนักและคำถามเกี่ยวกับต้นไม้สีแดงดำ คำถามนี้เป็นคำถามที่จะถามคำถามเดียวกัน แต่สำหรับต้นไม้ AVL คำถามคือให้ความหมายของ -balanced ต้นไม้ในขณะที่คำถามอื่น ๆμμ\mu มีบ้างไหมที่ต้นไม้ AVL ที่มีขนาดใหญ่ทั้งหมดนั้นมีความสมดุล ?μ>0μ>0\mu \gt 0μμ\mu ฉันคิดว่ามีเพียงคำจำกัดความเดียวของต้นไม้ AVL และไม่มีความกำกวม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.