ผลต่างระหว่างรุ่นของ "204512-53/lecture5"
ไปยังการนำทาง
ไปยังการค้นหา
Deltanulls (คุย | มีส่วนร่วม) |
Deltanulls (คุย | มีส่วนร่วม) |
||
| แถว 2: | แถว 2: | ||
''Hash Table'' เป็นโครงสร้างข้อมูลในรูปแบบตาราง ซึ่งอาจใช้แถวลำดับในการทำ ใช้ในการเก็บข้อมูลจำนวนมาก เพื่อสะดวกต่อการเก็บและค้นหา โดยการผ่านฟังก์ชันแฮช | ''Hash Table'' เป็นโครงสร้างข้อมูลในรูปแบบตาราง ซึ่งอาจใช้แถวลำดับในการทำ ใช้ในการเก็บข้อมูลจำนวนมาก เพื่อสะดวกต่อการเก็บและค้นหา โดยการผ่านฟังก์ชันแฮช | ||
| − | |||
| − | |||
== ลักษณะของ Hash Table == | == ลักษณะของ Hash Table == | ||
| แถว 9: | แถว 7: | ||
''Hash Table'' มักใช้แถวลำดับหรือ Map ขนาดใหญ่เพื่อใช้ในการจัดการเก็บข้อมูลจำนวนมาก โดยมีลักษณะการเก็บแบบดัชนีได้ (Indexing) วิธีการเก็บนั้นจะนำข้อมูลที่จะนำมาเก็บผ่านฟังก์ชันฟังก์ชันหนึ่ง(เราจะเรียกข้อมูลที่ผ่านฟังก์ชันนั้นว่า key) ซึ่งเรียกว่าฟังก์ชันแฮชจะได้เลขซึ่งจำเพาะกับข้อมูลนั้น กล่าวคือ ข้อมูลแต่ละตัวเมื่อผ่านฟังก์ชันแฮชแล้ว จะได้เลขที่แตกต่างกัน แล้วจึงนำข้อมูลไปเก็บไว้ในตาราง แถวลำดับ หรือ Map ที่กำหนดไว้ | ''Hash Table'' มักใช้แถวลำดับหรือ Map ขนาดใหญ่เพื่อใช้ในการจัดการเก็บข้อมูลจำนวนมาก โดยมีลักษณะการเก็บแบบดัชนีได้ (Indexing) วิธีการเก็บนั้นจะนำข้อมูลที่จะนำมาเก็บผ่านฟังก์ชันฟังก์ชันหนึ่ง(เราจะเรียกข้อมูลที่ผ่านฟังก์ชันนั้นว่า key) ซึ่งเรียกว่าฟังก์ชันแฮชจะได้เลขซึ่งจำเพาะกับข้อมูลนั้น กล่าวคือ ข้อมูลแต่ละตัวเมื่อผ่านฟังก์ชันแฮชแล้ว จะได้เลขที่แตกต่างกัน แล้วจึงนำข้อมูลไปเก็บไว้ในตาราง แถวลำดับ หรือ Map ที่กำหนดไว้ | ||
| − | [[ไฟล์:1.jpg]] | + | [[ไฟล์:1.jpg]] ให้ Hash Table มีจำนวนช่องทั้งหมด m ช่อง และ มี key เท่ากับ n kay |
| + | h : µ -> {0,1,2,…,m-1} | ||
| + | ต้องการหาข้อมูลที่มีค่าเท่ากับ X | ||
| + | สำหรับWorst case คือกรณีที่ข้อมูลลงช่องเดียวกัน | ||
| + | |||
| + | |||
| + | == Chaining == | ||
| + | [[ไฟล์:2.jpg]] | ||
| + | กำหนด Assumption สำหรับ key x ≠ y , i <- h(x) | ||
| + | |||
| + | Pr[h(x) = h(y)] | ||
| + | |||
| + | เวลาที่ใช้ในการค้นหา -> O (1+α) | ||
| + | 1. คำนวน h(x) -> O(1) | ||
| + | 2. คำนวน chain -> O(α) | ||
| + | ให้ L เป็นตัวแปรสุ่มแทนความยาวของ chain ที่ตำแหน่ง h(x) | ||
| + | Goal : หา Expectation m,L E[L] | ||
| + | [[ไฟล์:3.jpg]] | ||
| + | |||
| + | |||
| + | == Open Addessing == | ||
| + | จำนวนช่องควรจะใช้เป็นจำนวนเฉพาะ | ||
| + | [[ไฟล์:4.jpg]] | ||
| + | |||
| + | ตัวอย่างวิธีการหาข้อมูลใน Open Addessing | ||
| + | 1.Linear Probing | ||
| + | h : u->[0,1,…,m-1] | ||
| + | h[x] | ||
| + | h[x+1] | ||
| + | . | ||
| + | . | ||
| + | . | ||
| + | |||
| + | 2. Linear ยกกำลัง 2 | ||
| + | h[x] | ||
| + | [[ไฟล์:5.jpg]] | ||
| + | [[ไฟล์:6.jpg]] | ||
| + | |||
| − | + | == Hash Function == | |
| − | |||
| − | |||
| − | |||
รุ่นแก้ไขเมื่อ 04:06, 20 สิงหาคม 2553
Hash Table
Hash Table เป็นโครงสร้างข้อมูลในรูปแบบตาราง ซึ่งอาจใช้แถวลำดับในการทำ ใช้ในการเก็บข้อมูลจำนวนมาก เพื่อสะดวกต่อการเก็บและค้นหา โดยการผ่านฟังก์ชันแฮช
ลักษณะของ Hash Table
Hash Table มักใช้แถวลำดับหรือ Map ขนาดใหญ่เพื่อใช้ในการจัดการเก็บข้อมูลจำนวนมาก โดยมีลักษณะการเก็บแบบดัชนีได้ (Indexing) วิธีการเก็บนั้นจะนำข้อมูลที่จะนำมาเก็บผ่านฟังก์ชันฟังก์ชันหนึ่ง(เราจะเรียกข้อมูลที่ผ่านฟังก์ชันนั้นว่า key) ซึ่งเรียกว่าฟังก์ชันแฮชจะได้เลขซึ่งจำเพาะกับข้อมูลนั้น กล่าวคือ ข้อมูลแต่ละตัวเมื่อผ่านฟังก์ชันแฮชแล้ว จะได้เลขที่แตกต่างกัน แล้วจึงนำข้อมูลไปเก็บไว้ในตาราง แถวลำดับ หรือ Map ที่กำหนดไว้
ให้ Hash Table มีจำนวนช่องทั้งหมด m ช่อง และ มี key เท่ากับ n kay h : µ -> {0,1,2,…,m-1} ต้องการหาข้อมูลที่มีค่าเท่ากับ X สำหรับWorst case คือกรณีที่ข้อมูลลงช่องเดียวกัน
Chaining
กำหนด Assumption สำหรับ key x ≠ y , i <- h(x)
Pr[h(x) = h(y)]
เวลาที่ใช้ในการค้นหา -> O (1+α)
1. คำนวน h(x) -> O(1)
2. คำนวน chain -> O(α)
ให้ L เป็นตัวแปรสุ่มแทนความยาวของ chain ที่ตำแหน่ง h(x)
Goal : หา Expectation m,L E[L]
Open Addessing
จำนวนช่องควรจะใช้เป็นจำนวนเฉพาะ
ตัวอย่างวิธีการหาข้อมูลใน Open Addessing 1.Linear Probing
h : u->[0,1,…,m-1] h[x] h[x+1] . . .
2. Linear ยกกำลัง 2
h[x]![]()
![]()
