Hashing Sanchai Yeewiyom

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ตารางแฮช Hash Table.
Advertisements

Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
Chapter 12 : Maintaining Information Systems
Asst.Prof. Dr.Surasak Mungsing
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
SMARTPAYMENT REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
SE WEBSITE REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
Lesson 10 Software Evolution
COURSE OUTLINE STRUCTURE PROGRAMMING Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.
1 LAN Implementation Sanchai Yeewiyom School of Information & Communication Technology Naresuan University, Phayao Campus.
State Diagram Wattanapong suttapak, Software Engineering,
System Requirement Collection (2)
Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao เกณฑ์การนำเสนอ และเกณฑ์การให้ คะแนน ครั้งที่
MVC DESIGN PATTERN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO 1.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
เข้าสู่ วิชา การงานอาชีพ จัดทำโดย ด. ญ. สุชัญญา เขียวสมอ ม.1/14 เลขที่ 38 ด. ญ. พรรณวษา ยาวะระ ม.1/14 เลขที่ 32 นำเสนอ อาจารย์ ฐิตาพร ดวงเกตุ โรงเรียนวินิตศึกษา.
Cryptography CS 555 Lecture 6 part II : การเข้ารหัสลับด้วย ฟังก์ชันแฮชและ HMAC 1.
โรงเรียนจิตรลดา (สายวิชาชีพ)
Project Management by Gantt Chart & PERT Diagram
Security in Computer Systems and Networks
การพัฒนาการเรียนการสอนระดับอุดมศึกษากับการขับเคลื่อนประเทศไทย ๔.๐
บทที่ 3 การกําหนดปัญหา การศึกษาความเป็นไปได้และการวางแผนโครงการ
วิเคราะห์ค่างาน เพื่อกำหนดตำแหน่งสูงขึ้น
ความคืบหน้าการจัดทำ ร่าง-ระเบียบสำนักนายกรัฐมนตรี ว่าด้วยคณะกรรมการพัฒนาคุณภาพชีวิตระดับอำเภอ นพ.ยงยศ ธรรมวุฒิ ที่ปรึกษาระดับกระทรวง นายแพทย์ทรงคุณวุฒิ
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 8 แฮช (Hash).
Cryptography & Steganography
ผู้ช่วยศาสตราจารย์ ดร.วัลยา ธเนศพงศ์ธรรม ผู้ช่วยอธิการบดีฝ่ายวิชาการ
Data Structure & Algorithm Concept
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
การวิเคราะห์และออกแบบขั้นตอนวิธี
Stack Sanchai Yeewiyom
Trees (2) University of Phayao Sanchai Yeewiyom
การบริหารความปลอดภัยสารสนเทศ
System Requirement Collection (1)
Physical Database Design
การวิเคราะห์และออกแบบขั้นตอนวิธี
มหาวิทยาลัยราชภัฏนครปฐม
learning theory ทฤษฎีการเรียนรู้
พัฒนาระดับภาค ๖ ภาค การจัดทำแผน ปีงบประมาณ ๒๕๖๑
รวบรวมข้อมูลโดย กลุ่มแผนงานงบประมาณอุดมศึกษา สำนักนโยบายและแผนการอุดมศึกษา สำนักงานคณะกรรมการการอุดมศึกษา.
นวัตกรรมและเทคโนโลยี คือ INNOTECH
ความรู้เบื้องต้นโปรแกรม การป้อนข้อมูลบน Table
Project Feasibility Study
School of Information & Communication Technology
นโยบายรัฐบาลกับยุทธศาสตร์การพัฒนามหาวิทยาลัย
Yeunyong Kantanet School of Information and Communication Technology
บทบาทของ สถ. ในการสนับสนุน การดำเนินงานถ่ายโอนภารกิจ
การเขียนหัวข้อ (Proposal) ที่ดี
วิเคราะห์ค่างาน เพื่อกำหนดตำแหน่ง
สถาบันพัฒนาบุคลากรด้านการพัฒนาเมือง
สถาบันพัฒนาบุคลากรด้านการพัฒนาเมือง
Learning Tableau: Chapter 5
บทที่ 10 การค้นหาข้อมูล (Searching)
อุบลราชธานี นายนิวัตร ชูสมุทร นายชัยศักดิ์ ปิยะประสิทธิ์
By Personal Information Management
องค์ประกอบ ตัวชี้วัด ค่าน้ำหนัก และเกณฑ์การ ประเมิน มาตรฐานสถานที่จัดงานประเทศไทย (ประเภทห้องประชุม) ฉบับปรับปรุง 2558 กลุ่มที่ 1 ศูนย์ประชุม/อาคารแสดง.
ความสัมพันธ์ระหว่างรูปเรขาคณิต
Algorithms Analysis Sanchai Yeewiyom
เทคโนโลยีสารสนเทศและ การสื่อสาร
Array Sanchai Yeewiyom
หลักและศิลปะ ในการเขียนหนังสือติดต่อราชการ
Introduction to Structured System Analysis and Design
ใบสำเนางานนำเสนอ:

Hashing Sanchai Yeewiyom School of Information & Communication Technology University of Phayao

Hashing การจัดการข้อความหรือข้อมูลให้เป็นดัชนี เพื่อใช้อ้างอิงตำแหน่งการเก็บ ข้อมูลของอาร์เรย์หรือฐานข้อมูล เรียกรูปแบบการหาคีย์ดัชนีว่า การทำแฮช (Hashing) เมื่อต้องการค้นหาข้อมูลให้เจอเพียงครั้งเดียว สามารถใช้รูปแบบการอ้างอิง ตำแหน่งในการเก็บข้อมูลด้วยดัชนีเพื่อที่จะสามารถเข้าถึงข้อมูลได้เพียงครั้ง เดียว โดยการหาคีย์ดัชนีเพื่อใช้อ้างอิงตำแหน่งในเก็บข้อมูล

Hashing เมื่อพิจารณาอาร์เรย์ที่มีขนาด n ข้อมูล พบว่า ในแต่ละเรคอร์ดของอาร์เรย์ สามารถเก็บข้อมูลได้เพียงหนึ่งข้อมูล ในการหาตำแหน่งเพื่อเพิ่มข้อมูลเข้า ไปในอาร์เรย์เรียกว่า “การคำนวณหาแอดเดรส” (Address Calculator)

Hash function Selection digits Folding Modulate arithmetic การคำนวณหาแอดรเดรสในการจัดการข้อมูลในอาร์เรย์ และเรียกอาร์เรย์ใน การเก็บข้อมูลแฮชว่า Hash table ตัวอย่าง Selection digits Folding Modulate arithmetic

การเลือกหลัก (Selection digits) ถ้าคีย์ในการค้นหา คือ รหัสของลูกจ้างที่มีจำนวน 9 หลัก เช่น 001364825 ถ้าเลือกหลักที่ 4 และหลักสุดท้าย จะได้เลข 35 เป็นตำแหน่งในอ้างอิง แอดเดรสในตารางแฮช h(001364825) = 35 (เลือกจากหลักที่สี่และหลักสุดท้าย) ดังนั้น คีย์ในการค้นหาของข้อมูล 001354825 ในตารางแฮช คือ table[35] ข้อควรระวังเกี่ยวกับการเลือกหลักที่นำมาทำแฮชฟังก์ชัน ไม่ควรเลือกหลัก ที่มีโอกาสซ้ำกันได้เป็นจำนวนมาก

การบวกหลัก (Folding) หลักการของการบวกหลัก คือ การเลือกหลักและนำตัวเลขในหลักนั้นมา บวกกัน จากตัวอย่างเช่น นำข้อมูลตัวตัวจากทุกหลักมาบวกกัน เช่น ข้อมูล คือ 001364825 จะได้ดังนี้ 0 + 0 + 1 + 3 + 6 + 4 + 8 + 2 + 5 = 29 ดังนั้น คีย์ในการค้นหาของ 001364825 ในตารางแฮชคือ table[29] มีข้อกำหนดของการบวกทุกหลักจากทั้งหมด 9 หลักในแต่ละหลักจะมีข้อมูล ได้คือ 0 ถึง 9 ดังนั้นตารางแฮชจะเก็บข้อมูลได้ระหว่าง 0 ถึง 81 ข้อมูล (0 < h(คีย์ในการค้นหา) < 81)

การหารเอาเศษ (Modulate arithmetic) หลักการหารเอาเศษเป็นรูปแบบที่ง่ายของแฮชฟังก์ชัน โดยมีรูปแบบ คือ h(x) = x mod tableSize เมื่อ tableSize เป็นขนาดของ Hash table   ตัวอย่างเช่น ถ้า tableSize มีค่าคือ 101 จะได้ว่า h(x) = x mod 101 ทำให้ ค่าตัวเลข x จะอยู่ในช่วง 0 ถึง 100 และจากตัวอย่างข้อมูล 001364825 จะ ทำให้มีค่าแฮชคือ 12

Resolving Collision คีย์ในการค้นหาคือ 4567 เพิ่มเข้าไปในตารางแฮช table ที่มีขนาด tableSize เท่ากับ 101 (แฮชฟังก์ชันคือ h(x) = x mod 101) จะได้ตำแหน่ง ใหม่ในตารางแฮชเท่ากับ table[22] (ซึ่งได้จาก 4567 mod 101 เท่ากับ 22) และเมื่อเพิ่มคีย์ในการค้นหาคือ 7597 ตำแหน่งในการเพิ่มข้อมูลคือ table[22] เช่นกัน (ได้จาก 7597 mod 101 เท่ากับ 22) ซึ่งเป็นตำแหน่งที่ไม่ อนุญาตให้เพิ่มข้อมูลในตารางแฮชเนื่องจากเป็นตำแหน่งที่ชนกัน

Resolving Collision Separate Chaining Open Addressing Linear Probing Rehashing

Separate Chaining มีการนำ Linked List มาช่วย ในหนึ่ง Address สามารถเก็บข้อมูลได้มากกว่า 1 ตัว โดยตัวที่เข้ามาก่อน จะอยู่ที่ต้น List ตัวถัดมาก็จะต่อท้ายไปเรื่อยๆ

Separate Chaining ข้อมูล มีดังนี้ 1 0 4 25 16 9 21 64 36 49

Linear probing ใช้รูปแบบการเลื่อนตำแหน่งแอดเดรสไปยังตำแหน่งถัดไปในตารางแฮชมา เก็บข้อมูลแทนตำแหน่งแอดเดรสที่ชนกัน จะเลื่อนตำแหน่งไปเรื่อยๆ จนกระทั่งเจอตำแหน่งที่ยังไม่เก็บข้อมูล

Linear probing ข้อมูล มีดังนี้ 1 0 4 25 16 9 81 64 36 49

Rehashing เริ่มจากหาแอดเดรสที่ได้แฮชฟังก์ชันในลำดับที่หนึ่ง h1(key) ก่อนและเมื่อตำแหน่งที่ จากแฮชฟังก์ชันครั้งที่ 1 มีข้อมูลอยู่แล้ว จะหาแฮชฟังก์ชันในลำดับที่สอง h2(key) เพื่อ หาตำแหน่งแอดเดรสในตำแหน่งถัดไป โดยมีข้อกำหนดในการทำแฮช 2 ครั้งของแฮช ฟังก์ชัน h1(key) และ h2(key) ดังนี้ h2(key) ≠ 0 h1 ≠ h2 ตัวอย่างเช่น กำหนดให้ h1 และ h2 เป็นลำดับที่หนึ่งและลำดับที่สองของแฮชฟังก์ชันดังนี้ h1(key) = key mod 11 h2(key) = 7 – (key mod 7) เมื่อตารางแฮชสามารถเก็บข้อมูลได้ 11 ข้อมูลและถ้า key = 58 ทำให้แฮชคีย์ h1 อยู่ใน ตำแหน่ง 3 (58 mod 11) และ h2 เป็นการแก้ไขปัญหาการชนกัน ด้วยการหาตำแหน่ง แอดเดรสในลำดับถัดไปคือ 5 (7 – 58 mod 7)

Rehashing มีการเพิ่มคีย์ 14 เข้ามา หาแฮชคีย์ของคีย์ในการ ค้นหา 14 คือ h1(14) = 3 ซึ่งชนกับคีย์ 58 ดังนั้น ต้อง หาแฮชคีย์ในลำดับที่ 2 คือ h2(14) = 7 จึงเพิ่มคีย์ใน การค้นหาของ 14 ในตำแหน่ง 10 คือ table[3+7] หรือ table[10] จากนั้นเพิ่มคีย์ในการค้นหา 91 คือ h1(91) = 3 และ h2(91) = 7 แต่ table[3] และ table[10] มีข้อมูลที่ถูก ครอบครองแล้ว สุดท้ายในการหาคีย์ค้นหา 91 กลับไป ใช้ฟังก์แฮช h1 ใหม่อีกครั้งแต่เปลี่ยนคีย์ที่ได้จาก key = h1(91) + h2(91) + h2(91) ซึ่งจะได้ 3 + 7 + 7 = 17 ดังนั้น ตำแหน่งในการเพิ่มคีย์ในการค้นหา 91 คือ h1(key) = 17 mod 11 = 6 อยู่ใน table[6]