คำถามติดแท็ก ds.data-structures

คุณสมบัติและการใช้งานของโครงสร้างข้อมูลเช่นขอบเขตพื้นที่ต่ำหรือความซับซ้อนของเวลาในการแทรกและลบวัตถุ

2
การวิเคราะห์แบบดั้งเดิมของตัวกรอง Bloom ผิดหรือไม่
บทความนี้อ้างว่าการวิเคราะห์แบบดั้งเดิมของอัตราความผิดพลาดในตัวกรอง Bloom นั้นไม่ถูกต้องจากนั้นให้การวิเคราะห์อัตราความผิดพลาดที่เกิดขึ้นจริงเป็นระยะเวลานานและไม่เกิดขึ้นจริง บทความที่เชื่อมโยงได้รับการตีพิมพ์ในปี 2010 แต่ฉันได้เห็นการวิเคราะห์แบบดั้งเดิมของตัวกรอง Bloom อย่างต่อเนื่องที่จะสอนในขั้นตอนวิธีและโครงสร้างข้อมูลต่างๆ การวิเคราะห์แบบดั้งเดิมของตัวกรอง Bloom ถูกต้องหรือไม่? ขอบคุณ!

3
ผสานต้นไม้สองแบบในการค้นหาแบบทวิภาค
ฉันกำลังมองหาอัลกอริทึมที่จะรวมแผนภูมิการค้นหาแบบทวิภาคสองรายการที่มีขนาดและช่วงโดยพลการ ที่เห็นได้ชัดวิธีที่ฉันจะไปเกี่ยวกับการดำเนินการนี้จะไปหาต้นไม้ย่อยทั้งหมดที่มีช่วงสามารถใส่ลงในโหนดภายนอกโดยพลการในต้นไม้อื่น ๆ อย่างไรก็ตามเวลาทำงานที่แย่ที่สุดสำหรับอัลกอริทึมประเภทนี้น่าจะเป็นไปตามลำดับO(n+m)ที่nและmขนาดของต้นไม้แต่ละต้นตามลำดับ อย่างไรก็ตามฉันได้รับแจ้งว่าสามารถทำได้ในO(h)ที่ซึ่งhความสูงของต้นไม้ที่มีความสูงมากกว่า และฉันก็หลงทางว่าเป็นไปได้อย่างไร ฉันลองทดลองหมุนต้นไม้ต้นหนึ่งก่อน แต่การหมุนต้นไม้เป็นกระดูกสันหลังแล้ว O (h)

3
สำรวจโครงสร้างข้อมูลที่กระชับ
กระดาษของฟิสเชอร์ในเดือนนี้ทำให้ฉันนึกถึงว่าฉันมีความรู้เพียงเล็กน้อยเกี่ยวกับศิลปะของโครงสร้างข้อมูลที่รัดกุมและอัลกอริทึมที่จะใช้พวกเขา สำหรับผู้ที่ไม่รู้เกี่ยวกับโครงสร้างข้อมูลรวบรัด: กำหนดโครงสร้าง combinatorial ด้วย (n) การกำหนดค่าที่แตกต่างกันและรู้จักกันในชื่อ "ประโยชน์" เป็นตัวแทน(n) มีโครงสร้างข้อมูล "รวบรัด" ที่ใช้จัดเก็บข้อมูลของ บิตแต่ยังช่วยให้เราดำเนินการเร็วที่สุดเท่าที่จะทำได้ด้วยการแสดงปกติหรือไม่?R ( n )R(n)R(n)LG( a ( n ) )LG⁡(a(n))\lg(a(n))RRR คนอันดับต้น ๆ ที่ฉันสนใจถ้าใครอยากจะเพลิดเพลินกับการสนทนา คำต่อท้ายอาร์เรย์ มันเป็นส่วนย่อยของพีชคณิตทั้งหมด ต้นไม้สั่ง พวกเขาเป็นส่วนย่อยของสตริง "วงเล็บ" ไบนารีทั้งหมด (ความหลากหลายที่ตรงกัน) ค่าเล็กที่สุดที่ใกล้เคียงที่สุดเช่นเดียวกับในกระดาษ ( 1 ) คุณสามารถบีบอัดได้ทั้งสองมิติเท่านั้น อาร์เรย์ "ค่าที่น้อยกว่า" ที่อนุญาตในทิศทางเดียวคือชุดย่อยขนาดเล็กของรายการและคุณต้องเก็บบิตที่น้อยกว่าบิต{ 0 , . . , n - 1 }n{0,...,n-1}n\{0,...,n-1\}^nn lg( n …

1
ฟังก์ชั่นที่อาจเกิดขึ้นของต้นไม้ Splay: ทำไมต้องรวมบันทึกของขนาด?
ฉันกำลังสอนหลักสูตรเกี่ยวกับโครงสร้างข้อมูลและจะครอบคลุมต้นไม้ในช่วงต้นสัปดาห์หน้า ฉันอ่านกระดาษบนต้นไม้หลายครั้งและคุ้นเคยกับการวิเคราะห์และสัญชาตญาณที่อยู่เบื้องหลังโครงสร้างข้อมูล อย่างไรก็ตามฉันไม่สามารถหาจุดยืนที่มั่นคงสำหรับฟังก์ชันที่เป็นไปได้ที่ Sleator และ Tarjan ใช้ในการวิเคราะห์ การวิเคราะห์การทำงานโดยการกำหนดแต่ละองค์ประกอบในต้นไม้น้ำหนักโดยพลแล้วการตั้งค่าขนาดs ( x )ของโหนดที่จะเป็นผลรวมของน้ำหนักของโหนดในทรีย่อยที่ฝังรากที่x จากนั้นพวกเขาใช้เวลาบันทึกของค่านี้ที่จะได้รับการจัดอันดับR ( x )ของโหนดดังนั้นR ( x ) = บันทึกs ( x ) ในที่สุดฟังก์ชั่นที่อาจเกิดขึ้นของต้นไม้ถูกกำหนดให้เป็นผลรวมของการจัดอันดับของโหนดทั้งหมดwiwiw_is(x)s(x)s(x)xxxr(x)r(x)r(x)r(x)=logs(x)r(x)=log⁡s(x)r(x) = \log s(x) ฉันเข้าใจว่าฟังก์ชันที่มีศักยภาพนี้ทำงานได้อย่างถูกต้องและฉันสามารถติดตามการวิเคราะห์ได้ แต่ฉันไม่เห็นว่าทำไมพวกเขาถึงเลือกศักยภาพนี้ แนวคิดของการกำหนดขนาดให้กับแต่ละโหนดนั้นมีเหตุผลสำหรับฉันเนื่องจากถ้าคุณสรุปขนาดคุณจะได้รับความยาวพา ธ แบบถ่วงน้ำหนักของต้นไม้ อย่างไรก็ตามฉันไม่สามารถเข้าใจได้ว่าทำไมพวกเขาจึงตัดสินใจที่จะนำท่อนซุงของตุ้มน้ำหนักและสรุปยอดรวมเหล่านั้นมาแทน - ฉันไม่เห็นสมบัติทางธรรมชาติของต้นไม้ที่สิ่งนี้สอดคล้องกับ ฟังก์ชั่นที่อาจเกิดขึ้นของต้นไม้สเปรย์นั้นสอดคล้องกับสมบัติทางธรรมชาติของต้นไม้หรือไม่? มีเหตุผลบางอย่างนอกเหนือจาก "การทำงาน" หรือไม่ที่พวกเขาจะเลือกศักยภาพนี้ (ฉันอยากรู้อยากเห็นเป็นพิเศษเพราะชุดของหลักสูตรนี้ระบุว่า "การวิเคราะห์เป็นเวทมนตร์ดำ [N] o ความคิดวิธีค้นพบ") ขอบคุณ!

3
เริ่มต้นโครงสร้างโครงสร้างต้นไม้
หลังจากทำงานกับต้นไม้ 2-3 นิ้วมาสักพักฉันก็รู้สึกประทับใจกับความเร็วในการทำงานส่วนใหญ่ อย่างไรก็ตามปัญหาเดียวที่ฉันพบคือค่าใช้จ่ายขนาดใหญ่ที่เกี่ยวข้องกับการสร้างต้นนิ้วขนาดใหญ่ เนื่องจากการสร้างถูกกำหนดเป็นลำดับของการดำเนินการต่อกันคุณจะต้องสร้างโครงสร้างต้นไม้นิ้วจำนวนมากที่ไม่จำเป็น ด้วยลักษณะที่ซับซ้อนของต้นไม้ 2-3 นิ้วฉันจึงไม่เห็นวิธีการที่ใช้งานง่ายในการบู๊ตพวกเขาและการค้นหาทั้งหมดของฉันว่างเปล่า ดังนั้นคำถามคือคุณจะไปเกี่ยวกับการบูทต้นไม้ขนาด 2-3 นิ้วโดยมีค่าใช้จ่ายน้อยที่สุดได้อย่างไร หากต้องการชัดเจน: กำหนดลำดับทราบความยาวnสร้างการแสดงต้นไม้นิ้วของSด้วยการดำเนินการน้อยที่สุดSSSnnnSSS วิธีที่ไร้เดียงสาที่จะประสบความสำเร็จเป็นสายต่อเนื่องในการดำเนินงานข้อเสีย (ในวรรณคดีของ 'ผู้ประกอบการ) แต่นี้จะสร้างnที่แตกต่างกันโครงสร้างต้นไม้นิ้วที่เป็นตัวแทนของชิ้นทั้งหมดของSสำหรับ[ 1 .. ฉัน ]◃◃\triangleleftnnnSSS[ 1 .. ฉัน][1 ..ผม][1..i]

2
เข้าร่วมได้เร็วขึ้นของโครงสร้างข้อมูลที่เหมือน treap ที่มีขนาดใกล้เคียงกัน
ด้วยต้นไม้ AVL สองต้นT1T1T_1และT2T2T_2และค่าtrtrt_rเช่นนั้น∀x∈T1,∀y∈T2,x&lt;tr&lt;y∀x∈T1,∀y∈T2,x&lt;tr&lt;y\forall x \in T_1, \forall y \in T_2, x < t_r < y , มันง่ายที่จะสร้างต้นไม้ AVL ใหม่ที่ประกอบด้วยtrtrt_rและค่า ในT1T1T_1และT2T2T_2ในเวลาO(1+|h(T1)−h(T2)|)O(1+|h(T1)−h(T2)|)O(1+|h(T_1) - h(T_2)|)โดยที่h(T)h(T)h(T)หมายถึงความสูงของต้นไม้TTT (ตราบเท่าที่ต้นไม้เก็บความสูง) นี่ก็เป็นไปได้สำหรับต้นไม้สีแดงดำและฉันก็ถือว่าต้นไม้ที่สมดุลหลายชนิดเช่นกัน เป็นไปได้สำหรับโครงสร้างข้อมูลแบบทรีหรือทรีทเม้นต์หรือไม่? เกิดอะไรขึ้นถ้าเราปล่อยออกมาtrtrt_r ? Treaps paper ในอัลกอริทึมแสดงวิธีทำในO(min(h(T1),h(T2)))O(min(h(T1),h(T2)))O(\min(h(T_1),h(T_2)))เวลาที่คาดหวัง หากมีวิธีการดำเนินการ O (1) คาดว่าจะเข้าร่วมใน treaps (หรือทรีพเหมือนโครงสร้างข้อมูล) ด้วยความเกรี้ยวกราดขนาดเดียวกัน (หรือความสำคัญราก) ผมคิดว่ามันอาจจะเป็นไปได้ที่จะใช้เคล็ดลับของ Kaplan &amp; Tarjanของความร่วมมือ เงี่ยงเพื่อทำให้ treaps (หรือโครงสร้างข้อมูลเหมือน treap) ด้วยการเข้าร่วมแบบลอการิทึมทวีคูณ

2
การเร่งความเร็วแบบเอ็กซ์โปเนนเชียลในหน่วยความจำภายนอก
พื้นหลัง หน่วยความจำภายนอกหรือโมเดล DAM กำหนดต้นทุนของอัลกอริทึมด้วยจำนวนของ I / O ที่ดำเนินการ (โดยหลักแล้วจำนวนแคชที่หายไป) โดยทั่วไปเวลาทำงานเหล่านี้จะได้รับในแง่ของขนาดของหน่วยความจำและจำนวนคำที่สามารถถ่ายโอนไปยังหน่วยความจำในครั้งเดียว บางครั้งและถูกใช้สำหรับและตามลำดับ MMMBBBLLLZZZBBBMMM ยกตัวอย่างเช่นการเรียงลำดับต้องใช้ค่าใช้จ่ายของและการคูณเมทริกซ์ไร้เดียงสาต้อง{M}) Θ(N/BlogM/BN/B)Θ(N/BlogM/B⁡N/B)\Theta(N/B\log_{M/B} N/B)Θ(n3/BM−−√)Θ(n3/BM)\Theta(n^3/B\sqrt{M}) แบบจำลองนี้จะใช้ในการวิเคราะห์ "อัลกอริทึมแคชลบเลือน" ซึ่งไม่ได้มีความรู้เกี่ยวกับหรือMโดยทั่วไปแล้วเป้าหมายสำหรับอัลกอริธึมการลืมเลือนเพื่อให้เกิดประสิทธิภาพสูงสุดในโมเดลหน่วยความจำภายนอก สิ่งนี้ไม่สามารถทำได้ตลอดเวลาเช่นในปัญหาการเปลี่ยนแปลงเช่น (แสดงในBrodal, Faderberg 2003 ) ดูการเขียนนี้โดย Erik Demaineสำหรับคำอธิบายเพิ่มเติมเกี่ยวกับอัลกอริธึมแคชที่ลืมเลือนรวมถึงการอภิปรายของการเรียงลำดับและการคูณเมทริกซ์BBBMMM เราสามารถเห็นได้ว่าการเปลี่ยนทำให้การเร่งแบบลอการิทึมสำหรับการเรียงลำดับและการเร่งความเร็วแบบโพลิโนเมียลสำหรับการคูณเมทริกซ์ (ผลลัพธ์นี้มาจากHong, Kung 1981และก่อนหน้านี้จริง ๆ แล้วทั้งความหลงลืมแคชและการทำให้เป็นระเบียบของโมเดลหน่วยความจำภายนอก)MMM คำถามของฉันคือ: มีกรณีใดที่ speedup คือชี้แจงใน ? เวลาทำงานจะคล้าย(M)} ฉันสนใจอัลกอริทึมหรือโครงสร้างข้อมูลที่ไม่เหมาะสมกับแคชที่เหมาะกับคำอธิบายนี้ แต่จะมีความสุขกับอัลกอริทึม / โครงสร้างข้อมูลที่รับรู้ถึงแคชหรือแม้แต่ขอบเขตล่างที่รู้จักกันดีที่สุดMMMf(N,B)/2O(M)f(N,B)/2O(M)f(N,B)/2^{O(M)} โดยทั่วไปแล้วมันจะสันนิษฐานในรุ่นที่ขนาดคำว่าถ้าเป็นขนาดอินพุตและชัดเจน จากนั้นเพิ่มความเร็วของให้ speedup พหุนามในNนี่ทำให้ฉันเชื่อว่าหากปัญหาที่ฉันค้นหามีอยู่มันก็ไม่ใช่พหุนาม (มิฉะนั้นเราสามารถเปลี่ยนขนาดแคชโดยค่าคงที่เพื่อให้ได้จำนวนคงที่ของ I / Os …

1
แฮชตัวกรองของ Bloom: มากกว่าหรือใหญ่กว่า?
ในการใช้ตัวกรอง Bloom วิธีการดั้งเดิมเรียกใช้ฟังก์ชันแฮชอิสระหลายตัว Kirsch และ Mitzenmacherแสดงให้เห็นว่าคุณต้องการเพียงสองจริง ๆ เท่านั้นและสามารถสร้างส่วนที่เหลือเป็นชุดเชิงเส้นของมัน คำถามของฉันคืออะไรจริง ๆ แล้วอะไรคือความแตกต่างระหว่างฟังก์ชันแฮชสองอันกับอันที่สองมีเอนโทรปี สิ่งนี้มาจากการดูสิ่งที่คุณทำกับผลลัพธ์ของฟังก์ชันแฮช: คุณจะใช้ค่าแฮชแบบ 64 บิตและปรับให้เท่าขนาดของเวกเตอร์บิตซึ่งอาจเล็กกว่า 2 อย่างมาก64 . นี่เป็นการเปลี่ยนแปลงที่ทำให้สูญเสียเอนโทรปีอย่างชัดเจน (ยกเว้นในกรณีที่ขนาดแฮชและความจุของตัวกรองของคุณไม่ตรงกัน) สมมติว่าตัวกรองของฉันมีรายการน้อยกว่า 2 32สิ่งที่จะหยุดฉันจากการแยกค่าแฮช 64- บิตของฉันเป็นสองแฮช 32- บิตสองและการรวมกันเชิงเส้นของเหล่านั้น หรือใช้เพื่อหว่าน PRNG กล่าวอีกนัยหนึ่งฉันต้องทราบข้อมูลจริงเพียงใดเกี่ยวกับองค์ประกอบที่ฉันแทรกลงในตัวกรองแต่ละชุดของ Bloom เพื่อให้แน่ใจว่ามีอัตราบวกเป็นเท็จมาตรฐาน หรือโดยทั่วไปความสัมพันธ์ระหว่างว่าฉันสามารถแยกแยะองค์ประกอบต่าง ๆ ได้ดีเพียงใด (ฉันใช้เพื่ออธิบายองค์ประกอบเหล่านี้กี่บิต) กับตัวกรอง Bloom ของฉันทำงานอย่างไร ดูเหมือนว่าฉันจะไปได้ด้วยบิตสำหรับขนาดฟิลเตอร์ของmหรือเท่ากับ2 ( lg ( - n ln p ) - 2 …

2
ตัวอย่างที่โดดเด่นของแนวคิดรากที่สองในการวิเคราะห์ความซับซ้อน
k = √max{k,n/k}max{k,n/k}\max \left\{k, n/k\right\}k = n--√k=nk=\sqrt n baby-step อัลกอริทึมยักษ์ขั้นตอนสำหรับการคำนวณลอการิทึมไม่ต่อเนื่องในO ( n--√)O(n)O(\sqrt n) , ช่วง 2D แบบคงที่นับในO ( n--√)O(n)O(\sqrt n)เวลาและO ( n )O(n)O(n)หน่วยความจำ คิวลำดับความสำคัญด้วยสารสกัดจากนาทีในO ( n--√k)O(nk)O(\sqrt[k] n)และลดลงใน-KEY O ( 1 )O(1)O(1) , การระบายสีกราฟ 3 สีด้วยO ( n--√)O(n)O(\sqrt n)ในเวลาพหุนาม เพียงเพื่อชื่อไม่กี่ แม้ว่าอัลกอริทึมดังกล่าวมักจะไม่ดีนัก แต่นักเรียนเข้าใจง่ายและแสดงให้เห็นอย่างรวดเร็วว่าขอบเขตไร้เดียงสานั้นไม่เหมาะสม นอกจากนี้โครงสร้างข้อมูลแบบสแควร์รูทความคิดบางครั้งใช้งานได้ดีกว่าคู่แบบอิงฐานสองของต้นไม้เนื่องจากความเป็นมิตรกับแคช นั่นเป็นเหตุผลที่ฉันให้ความสนใจกับหัวข้อนี้มากในขณะที่สอน ฉันสนใจตัวอย่างที่เด่นกว่านี้ ดังนั้นฉันกำลังมองหาอัลกอริทึม (สง่างามกว่า) ใด ๆ โครงสร้างข้อมูลโพรโทคอลการสื่อสาร ฯลฯ …

2
โครงสร้างข้อมูลถาวรใดสำหรับชุดองค์ประกอบที่เรียงลำดับบางส่วน
ฉันต้องการจัดเก็บชุดองค์ประกอบของประเภท a ประเภทสั่งบางส่วนเพื่อเปรียบเทียบ1และ2สามารถกลับมามีขนาดเล็กมากขึ้นเท่ากันหรือหาที่เปรียบมิได้a1a1a_1a2a2a_2 ปัญหาอย่างหนึ่งของแฮชเทเบิลคือองค์ประกอบที่เท่ากันสองค่าสามารถนำเสนอได้แตกต่างกันและฉันไม่สามารถเข้าถึงฟังก์ชันการแฮชที่สอดคล้องกับความเท่าเทียมกันได้ การเปรียบเทียบองค์ประกอบสองรายการอาจเป็นกระบวนการที่มีความยาวดังนั้นจึงน่าสนใจที่จะลดการเปรียบเทียบให้น้อยที่สุด หากจำเป็นสามารถบันทึกการโทรไปยังผู้ดำเนินการเปรียบเทียบได้ ตอนนี้ฉันรู้แล้วว่าฉันจะต้องเก็บ antichains เท่านั้น (หรือสมมติว่าเป็นอย่างนั้น) แม่นยำมากขึ้นการดำเนินการที่ฉันจะต้องดำเนินการมีดังนี้: ลบองค์ประกอบออกจาก antichain; ลองเพิ่มองค์ประกอบ หากองค์ประกอบมีขนาดเล็กกว่าสมาชิกอย่าเพิ่มองค์ประกอบมิฉะนั้นให้เพิ่มและลบทุกองค์ประกอบที่เล็กกว่านั้น i1&lt;a&lt;i2i1&lt;a&lt;i2i_1 < a < i_2i3&lt;b&lt;i4i3&lt;b&lt;i4i_3 < b < i_4i2&lt;i3i2&lt;i3i_2 < i_3a&lt;ba&lt;ba < bi2≮i3i2≮i3i_2 \not< i_3a≮ba≮ba \not < b

1
รักษาความสงบเรียบร้อยในรายการในในเวลา
ปัญหาการบำรุงรักษาคำสั่งซื้อ (หรือ "การรักษาคำสั่งซื้อในรายการ") คือการสนับสนุนการดำเนินงาน: singleton: สร้างรายการที่มีหนึ่งรายการส่งคืนตัวชี้ไปยังรายการนั้น insertAfter: กำหนดตัวชี้ไปยังรายการแทรกรายการใหม่หลังจากส่งคืนตัวชี้ไปยังรายการใหม่ delete: กำหนดตัวชี้ไปยังรายการเอาออกจากรายการ minPointer: กำหนดสองพอยน์เตอร์ให้กับรายการในรายการเดียวกันส่งคืนค่าที่ใกล้กับด้านหน้าของรายการมากขึ้น ฉันทราบวิธีแก้ไขปัญหาสามข้อที่ดำเนินการทั้งหมดในเวลาตัดจำหน่าย พวกเขาทั้งหมดใช้การคูณO ( 1 )O(1)O(1) Athanasios K. Tsakalidis: การรักษาลำดับในรายการที่เชื่อมโยงทั่วไป Dietz, P. , D. Sleator, สองอัลกอริทึมสำหรับการรักษาความสงบเรียบร้อยในรายการ Michael A. Bender, Richard Cole, Erik D. Demaine, Martin Farach-Colton และ Jack Zito“ สองอัลกอริทึมแบบง่ายสำหรับการคงคำสั่งในรายการ” สามารถเก็บรักษาลำดับในรายการในเวลาตัดจำหน่ายโดยไม่ใช้การดำเนินการทางคณิตศาสตร์ใด ๆ ที่ไม่ได้อยู่ในหรือไม่?O ( 1 )O(1)O(1)C0Aค0AC^0

1
การปิดสกรรมกริยาออนไลน์ดีกว่า O (N ^ 2) ต่อการเพิ่มขอบ
ฉันกำลังมองหาอัลกอริทึมออนไลน์เพื่อรักษาการปิด transitive ของกราฟ acyclic กำกับด้วยความซับซ้อนเวลาน้อยกว่า O (N ^ 2) ต่อการเพิ่มขอบ อัลกอริทึมปัจจุบันของฉันเป็นเช่นนี้: For every new edge u-&gt;v connect all nodes in Pred(u) \cup { u } with all nodes in Succ(v) \ \cup { v }. สำหรับ O (n ^ 2) ขอบแปลนี้ในเวลาซับซ้อนรวมของ O (n ^ 4) ซึ่งมากยิ่งกว่าตัวอย่างเช่นฟลอยด์-Warshall

2
ซิปคืออะไรและเกี่ยวข้องกับโครงสร้างเหมือนต้นไม้อย่างไร
ฉันกำลังอ่านบทหนึ่งในLYAHซึ่งไม่สมเหตุสมผลกับฉันจริงๆ ฉันเข้าใจว่ารูดซิปสามารถเข้าไปสำรวจโครงสร้างคล้ายต้นไม้ได้โดยพลการ แต่ฉันต้องการความกระจ่างเกี่ยวกับมัน นอกจากนี้ซิปยังสามารถวางนัยกับโครงสร้างข้อมูลใด ๆ ได้หรือไม่

1
ต้องการภาพรวมที่ดีสำหรับอัลกอริทึมโครงสร้างข้อมูลที่ซับซ้อน
( ถามไซต์หลักแล้ว แต่ขอให้คุ้มครองเพิ่มเติมที่นี่ด้วย) เนื่องจากฉันรู้เกี่ยวกับโครงสร้างข้อมูลสั้น ๆฉันต้องการภาพรวมที่ดีของการพัฒนาล่าสุดในพื้นที่นั้น ฉัน googled และอ่านบทความจำนวนมากที่ฉันสามารถเห็นได้จากผลลัพธ์ของ google ตามคำขอจากหัวของฉัน ฉันยังคงสงสัยว่าฉันพลาดสิ่งสำคัญที่นี่ นี่คือหัวข้อที่น่าสนใจเป็นพิเศษสำหรับฉัน: การเข้ารหัสแบบสั้น ๆ ของต้นไม้ไบนารีด้วยการดำเนินการที่มีประสิทธิภาพในการรับพาเรนต์ลูกซ้าย / ขวาจำนวนองค์ประกอบในทรีย่อย คำถามหลักที่นี่มีดังต่อไปนี้: วิธีการทั้งหมดที่ฉันรู้ว่าถือว่าโหนดของต้นไม้นับตามลำดับลมหายใจแรก (เช่นในงานบุกเบิกในพื้นที่นี้ Jacobson, G. J (1988) โครงสร้างข้อมูลแบบคงที่แบบรวบรัด) ซึ่งไม่ได้ ดูเหมือนจะเหมาะสมสำหรับงานของฉัน ฉันจัดการกับต้นไม้ไบนารีขนาดใหญ่ที่ได้รับในเค้าโครงความลึกแรกและดัชนีโหนดความลึกแรกเป็นกุญแจสู่คุณสมบัติของโหนดอื่นดังนั้นการเปลี่ยนเค้าโครงต้นไม้มีค่าใช้จ่ายสำหรับฉันซึ่งฉันต้องการจะลดให้น้อยที่สุด ดังนั้นความสนใจในการอ้างอิงถึงงานพิจารณาอื่น ๆ แล้วเค้าโครงต้นไม้ BF อาร์เรย์รายการที่มีความยาวผันแปรขนาดใหญ่ในหน่วยความจำภายนอก อาร์เรย์ไม่เปลี่ยนรูป: ฉันไม่จำเป็นต้องเพิ่ม / ลบ / แก้ไขรายการ ความต้องการเพียงอย่างเดียวคือเวลาเข้าถึงองค์ประกอบ O (1) และค่าใช้จ่ายต่ำที่สุดเท่าที่จะเป็นไปได้วิธีออฟเซ็ตและขนาดที่ตรงไปตรงมาดีกว่า นี่คือสถิติบางอย่างที่ฉันรวบรวมเกี่ยวกับข้อมูลทั่วไปสำหรับงานของฉัน: จำนวนของไอเท็มทั่วไป - หลายร้อยล้านขึ้นไปเป็นหมื่น milliards ประมาณ 30% …

1
การนำฟังก์ชันแฮช 5 อิสระมาใช้ใหม่สำหรับการตรวจสอบเชิงเส้น
ในตารางแฮชที่แก้ไขการชนกันโดยการตรวจเชิงเส้นเพื่อให้แน่ใจว่าประสิทธิภาพคาดหวังมีความจำเป็นและเพียงพอที่ฟังก์ชันแฮชจะมาจากตระกูลอิสระ 5 ตัว (ความพอเพียง: "การตรวจสอบเชิงเส้นด้วยความเป็นอิสระอย่างต่อเนื่อง", Pagh et al. , ความจำเป็น: "ใน k-Independence ที่กำหนดโดยการตรวจสอบเชิงเส้นและความเป็นอิสระต่ำสุด", Pătraşcuและ Thorup )O ( 1 )O(1)O(1) ฉันเข้าใจว่าครอบครัวที่เป็นอิสระ 5 คนที่รู้จักกันเร็วที่สุดใช้ตาราง การเลือกฟังก์ชั่นจากครอบครัวที่ดังกล่าวอาจจะมีราคาแพงดังนั้นฉันต้องการที่จะลดจำนวนครั้งที่ฉันทำดังนั้นในขณะที่ยังคงมีการป้องกันการโจมตีซับซ้อนอัลกอริทึมที่อธิบายไว้ในครอสบีและวัลลักของ"Denial of Service ผ่านการโจมตีขั้นตอนซับซ้อน" ฉันกังวลน้อยเกี่ยวกับการโจมตีเวลา (เช่นศัตรูที่มีนาฬิกาจับเวลา) อะไรคือผลของการใช้ฟังก์ชันเดียวกันซ้ำ: เมื่อเพิ่มตารางแฮชที่เต็มเกินไป เมื่อลดขนาดตารางแฮชที่ไม่เต็มเพียงพอหรือไม่ เมื่อสร้างตารางแฮชที่มีบิต "ลบ" ที่ตั้งค่าไว้มากเกินไปหรือไม่ ในตารางแฮชที่แตกต่างกันที่อาจมีบางคีย์เหมือนกัน?kkk kkkที่แตกต่างกันตารางแฮชที่มีปุ่มในการร่วมกันไม่ได้หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.