หน้าแรก
หน้าแรก
ในส่วนนี้เราจะมาดูกันว่าการแฮชคืออะไรโดยเปิดแอดเดรส การระบุที่อยู่แบบเปิดเป็นอีกเทคนิคหนึ่งในการแก้ปัญหาการชนกัน ไม่เหมือนกับการทำ chaining ตรงที่ไม่มีการแทรกองค์ประกอบไปยังโครงสร้างข้อมูลอื่นๆ มันแทรกข้อมูลลงในตารางแฮชเอง ขนาดของตารางแฮชควรมากกว่าจำนวนคีย์ มีสามวิธีที่นิยมใช้กันสำหรับเทคนิคการระบุ
ในส่วนนี้ เราจะมาดูกันว่าอะไรคือเทคนิคการตรวจสอบเชิงเส้นในรูปแบบการกำหนดที่อยู่แบบเปิด มีฟังก์ชันแฮชธรรมดา h´(x) :U → {0, 1, . . ., ม. – 1}. ในรูปแบบการกำหนดที่อยู่แบบเปิด ฟังก์ชันแฮชจริง h(x) กำลังใช้ฟังก์ชันแฮชธรรมดา h’(x) และแนบส่วนอื่นด้วยเพื่อสร้างสมการเชิงเส้นหนึ่ง h´(𝑥) =𝑥 𝑚𝑜𝑑 𝑚 ℎ(𝑥,
ในส่วนนี้เราจะมาดูกันว่าอะไรคือเทคนิคการตรวจสอบกำลังสองในรูปแบบการกำหนดที่อยู่แบบเปิด มีฟังก์ชันแฮชธรรมดา h’(x) :U → {0, 1, . . ., ม. – 1}. ในรูปแบบการกำหนดที่อยู่แบบเปิด ฟังก์ชันแฮชจริง h(x) กำลังใช้ฟังก์ชันแฮชธรรมดา h(x) และแนบส่วนอื่นด้วยเพื่อสร้างสมการกำลังสองอันหนึ่ง h´ =(𝑥) =𝑥 𝑚𝑜𝑑 𝑚 ℎ(
ในส่วนนี้เราจะมาดูกันว่าอะไรคือเทคนิค Double Hashing ในรูปแบบการกำหนดที่อยู่แบบเปิด มีฟังก์ชันแฮชธรรมดา h´(x) :U → {0, 1, . . ., ม. – 1}. ในรูปแบบการกำหนดที่อยู่แบบเปิด ฟังก์ชันแฮชจริง h(x) กำลังใช้ฟังก์ชันแฮชธรรมดา h(x) เมื่อช่องว่างไม่ว่างเปล่า จากนั้นจึงดำเนินการฟังก์ชันแฮชอื่นเพื่อให้ได้พื้นที่ท
ในส่วนนี้เราจะมาดูกันว่าวิธีของ Brent เกี่ยวข้องกับการแฮชแบบเปิดที่กล่าวถึงคืออะไร วิธีนี้เป็นแบบฮิวริสติก การดำเนินการนี้จะพยายามลดเวลาเฉลี่ยสำหรับการค้นหาที่ประสบความสำเร็จในตารางแฮชให้น้อยที่สุด แต่เดิมวิธีนี้ใช้กับเทคนิคการแฮชแบบคู่ แต่วิธีนี้ใช้ได้กับเทคนิคการระบุที่อยู่แบบเปิดใดๆ เช่น การตรวจ
ที่นี่เราจะมาดูกันว่าแผนผังการค้นหาไบนารีที่สมดุลคืออะไร ต้นไม้การค้นหาแบบไบนารี (BST) คือต้นไม้ไบนารีซึ่งมีองค์ประกอบน้อยกว่าที่ลูกด้านซ้ายและมีองค์ประกอบมากกว่าที่ลูกด้านขวา ความซับซ้อนของเวลาเฉลี่ยสำหรับการค้นหาองค์ประกอบใน BST คือ O(log n) ขึ้นอยู่กับความสูงของแผนผังการค้นหาแบบไบนารี เพื่อรักษา
ในส่วนนี้เราจะมาดูกันว่าเทคนิคการแฮชแบบอสมมาตรคืออะไร ในเทคนิคนี้ ตารางแฮชจะแบ่งออกเป็น d จำนวนบล็อก รอยแยกแต่ละอันมีความยาว n/d ค่าโพรบ xi, 0 ≤ i ≤ d, วาดแบบสม่ำเสมอจาก $$\lbrace\frac{i*n}{d},...,\frac{(i+1)*n}{d-1} \rbrace$$ เช่นเดียวกับการแฮชแบบหลายตัวเลือก ในการแทรก x อัลกอริทึมจะตรวจสอบความยาวข
ในส่วนนี้เราจะมาดูกันว่า LCFS Hashing คืออะไร นี่เป็นหนึ่งในกลยุทธ์การกำหนดที่อยู่แบบเปิด ซึ่งเปลี่ยนกลยุทธ์การแก้ปัญหาการชนกัน หากเราตรวจสอบอัลกอริทึมสำหรับการแฮชในรูปแบบที่อยู่เปิด เราจะพบว่าหากองค์ประกอบสององค์ประกอบชนกัน ที่มีลำดับความสำคัญสูงกว่า จะถูกแทรกลงในตาราง และองค์ประกอบที่ตามมาจะต้องดำ
เราทราบดีว่ากราฟนั้นเป็นโครงสร้างข้อมูลที่ไม่เป็นเชิงเส้น ในโครงสร้างข้อมูลนี้ เราใส่ค่าบางค่าลงในโหนด และโหนดเชื่อมต่อกันแม้ว่าจะมีขอบต่างกัน เนื่องจากเราสามารถจัดเก็บข้อมูลลงในโครงสร้างกราฟได้ เราจึงต้องค้นหาองค์ประกอบจากกราฟเพื่อใช้งาน สำหรับการค้นหาในกราฟ มีสองวิธีที่แตกต่างกัน เทคนิคการค้นหาแบ
การค้นหากราฟเชิงลึกในครั้งแรกมีความคล้ายคลึงกัน แต่สำหรับ Digraphs หรือกราฟกำกับ เราสามารถหาขอบบางประเภทได้ อัลกอริทึม DFS จะสร้างทรีที่เรียกว่า DFS tree ขอบมีสี่ประเภทที่เรียกว่า − ขอบต้นไม้ (T) − ขอบเหล่านั้นซึ่งมีอยู่ในแผนผัง DFS ขอบด้านหน้า (F) − ขนานกับชุดของขอบไม้ (จากหมายเลข DFS ที่เล็ก
ในส่วนนี้ เราจะเห็นกราฟ Eulerian และ Hamiltonian แต่ก่อนที่จะดำดิ่งลงไปนั้น ก่อนอื่นเราต้องดูว่าเส้นกราฟคืออะไร สมมติว่าเรามีหนึ่งกราฟด้านล่าง − เส้นทางคือเส้นทางซึ่งเป็นลำดับของขอบ (v1, v2), (v2, v3), …, (vk - 1, vk) ซึ่งจุดยอดทั้งหมด (v1, v2, … , vk) อาจไม่แตกต่างกัน แต่ขอบทั้งหมดมีความแตกต่างก
binomial Heap คือกลุ่มของต้นไม้ทวินาม ต้นไม้ทวินาม Bk เป็นต้นไม้ที่มีลำดับซึ่งกำหนดแบบเรียกซ้ำ ทวินามทรี B0 ประกอบด้วยโหนดเดียว ต้นไม้ทวินาม Bk ประกอบด้วยต้นไม้ทวินาม Bk-1 สองต้น ที่เชื่อมโยงกัน. รูทของอันหนึ่งเป็นรูทย่อยด้านซ้ายสุดของรูทของอีกอันหนึ่ง ฮีปทวินามบางส่วนมีลักษณะดังนี้ - คุณสมบั
เช่นเดียวกับ Binomial heaps Fibonacci heaps คือกลุ่มของต้นไม้ พวกมันขึ้นอยู่กับกองทวินามอย่างหลวม ๆ ต้นไม้ในกอง Fibonacci ต่างจากต้นไม้ที่มีทวินามฮีป แต่ไม่ถูกจัดลำดับ แต่ละโหนด x ใน Fibonacci heaps มีตัวชี้ p[x] ไปยังพาเรนต์ และตัวชี้ชายด์[x] ไปยังโหนดย่อยตัวใดตัวหนึ่ง ลูกของ x ถูกเชื่อมโยงเข้าด้ว
ที่นี่เราจะมาดูวิธีการแทรกและองค์ประกอบจากโครงสร้างข้อมูลไบนารีสูงสุดของฮีปแบบไบนารี สมมติว่าต้นไม้เริ่มต้นอยู่ด้านล่าง − อัลกอริทึมการแทรก insert(heap, n, item) − Begin if heap is full, then exit else n := n + 1 for i := n,
ที่นี่เราจะมาดูวิธีการลบองค์ประกอบออกจากโครงสร้างข้อมูลไบนารีสูงสุดของฮีปแบบไบนารี สมมติว่าต้นไม้เริ่มต้นเป็นเหมือนด้านล่าง − อัลกอริธึมการลบ delete(heap, n) − Begin if heap is empty, then exit else item := heap[1] last := h
ในที่นี้เราจะพูดถึงตารางแฮชที่มีคีย์จำนวนเต็ม ในที่นี้ค่าสำคัญ 𝑥 มาจากจักรวาล 𝑈 โดยที่ 𝑈 ={0, 1, … , 𝑢 – 2, 𝑢 – 1} ฟังก์ชันแฮชคือ ℎ โดเมนของฟังก์ชันแฮชนี้คือ 𝑈 ช่วงอยู่ในชุด {0, 1, … , 𝑚 – 1} และ 𝑚 ≤ 𝑢. ฟังก์ชันแฮช h ได้รับการกล่าวขานว่าเป็นฟังก์ชันแฮชที่สมบูรณ์แบบสำหรับชุด 𝑆 ⊆ 𝑈 หากสำหรั
ในที่นี้เราจะพูดถึงเรื่องการแฮชกับการแบ่ง สำหรับสิ่งนี้เราใช้ฟังก์ชันแฮช - ℎ(𝑥) = 𝑥 𝑚𝑜𝑑 𝑚 ในการใช้ฟังก์ชันแฮชนี้ เรารักษาอาร์เรย์ A[0, … m – 1] โดยที่แต่ละองค์ประกอบของอาร์เรย์เป็นตัวชี้ไปที่ส่วนหัวของรายการที่เชื่อมโยง รายการที่เชื่อมโยง Li ชี้ไปที่องค์ประกอบอาร์เรย์ A[i] เก็บองค์ประกอบทั้งห
ในที่นี้เราจะพูดถึงเรื่องการแฮชด้วยวิธีคูณ สำหรับสิ่งนี้เราใช้ฟังก์ชันแฮช - ℎ(𝑥) = ⌊𝑚𝑥𝐴⌋ 𝑚𝑜𝑑 𝑚 โดยที่ A เป็นค่าคงที่มูลค่าจริง ข้อดีของวิธีนี้คือค่าของ m ไม่สำคัญนัก เราเอา m เป็นกำลัง 2 ได้ด้วย แม้ว่าค่าใด ๆ ของ A จะให้ฟังก์ชันแฮช แต่ค่าบางค่าของ A ก็ดีกว่าค่าอื่น ตามความเห็
บางครั้งเราสร้างอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิก หากอาร์เรย์ได้รับการจัดสรรโดยใช้เทคนิคการจัดสรรหน่วยความจำแบบไดนามิก เราสามารถเพิ่มขนาดของอาร์เรย์เป็นสองเท่าโดยดำเนินการบางอย่าง สมมติว่าขนาดอาร์เรย์เริ่มต้นคือ 5 อาร์เรย์ 0 1 2 3 4 องค์ประกอบ 1 องค์ประกอบ 2 องค์ประกอบ 3
อย่างที่เราทราบดีว่าอาร์เรย์มีความเป็นเนื้อเดียวกันตามคำจำกัดความ ดังนั้นเราต้องใส่ข้อมูลประเภทเดียวกันในอาร์เรย์ แต่ถ้าเราต้องการเก็บข้อมูลประเภทต่าง ๆ จะมีเคล็ดลับอย่างไร? ในภาษาซี เช่นเดียวกับภาษาโบราณ เราสามารถใช้สหภาพแรงงานเพื่อรวมประเภทต่าง ๆ เข้าเป็นประเภทเดียว จากนั้นเราสามารถกำหนดอาร์เรย์ใน