คำถามติดแท็ก hashtable

ตารางแฮชในการเขียนโปรแกรมคือคอลเล็กชันที่ใช้ฟังก์ชันแฮชเพื่อแมปการระบุค่า (คีย์) กับค่าที่เกี่ยวข้อง


11
วิธีการเชื่อมโยงอาเรย์ / hashing ใน JavaScript
ฉันต้องการเก็บสถิติบางอย่างโดยใช้ JavaScript ในแบบที่ฉันต้องการใน C #: Dictionary<string, int> statistics; statistics["Foo"] = 10; statistics["Goo"] = statistics["Goo"] + 1; statistics.Add("Zoo", 1); มีHashtableหรือสิ่งที่ชอบDictionary<TKey, TValue>ใน JavaScript? ฉันจะเก็บค่าได้อย่างไร?


14
ตารางแฮชทำงานอย่างไร
ฉันกำลังมองหาคำอธิบายวิธีการใช้งานตารางแฮช - เป็นภาษาอังกฤษธรรมดาสำหรับคนธรรมดาอย่างฉัน! ตัวอย่างเช่นฉันรู้ว่าต้องใช้กุญแจคำนวณแฮช (ฉันกำลังหาคำอธิบายว่าทำอย่างไร) จากนั้นก็ทำการโมดูโลบางอย่างเพื่อหาว่ามันอยู่ที่ไหนในอาเรย์ที่เก็บค่าไว้ แต่นั่นคือที่ความรู้ของฉันหยุด . ทุกคนสามารถอธิบายกระบวนการได้หรือไม่ แก้ไข:ฉันไม่ได้ถามเฉพาะเกี่ยวกับวิธีคำนวณรหัสแฮช แต่ภาพรวมทั่วไปของวิธีการใช้ตารางแฮช

10
.NET HashTable Vs Dictionary - พจนานุกรมสามารถเร็วได้หรือไม่
ฉันพยายามที่จะคิดออกว่าเมื่อไหร่และทำไมต้องใช้พจนานุกรมหรือ HashTable ฉันได้ทำการค้นหาเล็กน้อยที่นี่และพบว่ามีคนพูดถึงข้อดีทั่วไปของพจนานุกรมที่ฉันเห็นด้วยอย่างสมบูรณ์ซึ่งนำไปสู่ความได้เปรียบในการชกมวยและการแกะกล่องเพื่อเพิ่มประสิทธิภาพเล็กน้อย แต่ฉันได้อ่านพจนานุกรมจะไม่กลับวัตถุตามลำดับที่พวกเขาจะแทรกสิ่งที่เรียงลำดับ HashTable จะอยู่ที่ไหน ในขณะที่ฉันเข้าใจว่าสิ่งนี้นำไปสู่ ​​HashTable ที่เร็วขึ้นสำหรับบางสถานการณ์ คำถามของฉันเป็นจริงสถานการณ์เหล่านั้นอาจเป็นอย่างไร ฉันแค่คิดผิดไปจากข้อสันนิษฐานข้างต้นหรือไม่? คุณอาจใช้สถานการณ์ใดในการเลือกสถานการณ์หนึ่งเหนือสถานการณ์อื่น (ใช่สถานการณ์สุดท้ายค่อนข้างคลุมเครือ)

12
จะเกิดอะไรขึ้นเมื่อใส่รหัสซ้ำลงใน HashMap
ถ้าผมผ่านคีย์เดียวกันหลายครั้งเพื่อให้HashMap's putวิธีการสิ่งที่เกิดขึ้นไปเป็นค่าเดิมหรือไม่? และถ้าเกิดว่าแม้แต่ค่าซ้ำ ฉันไม่พบเอกสารใด ๆ เกี่ยวกับเรื่องนี้ กรณีที่ 1: เขียนทับค่าสำหรับคีย์ Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); System.out.println(mymap.get("1")); surely not oneเราได้รับ กรณีที่ 2: ค่าซ้ำ Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); // The following line was added: mymap.put("1","one"); System.out.println(mymap.get("1")); oneเราได้รับ แต่จะเกิดอะไรขึ้นกับค่าอื่น ๆ ฉันสอนพื้นฐานให้กับนักเรียนและฉันถูกถามเรื่องนี้ …
276 java  hashmap  hashtable 

4
พจนานุกรม Python เป็นตัวอย่างของตารางแฮชหรือไม่
หนึ่งในโครงสร้างข้อมูลพื้นฐานใน Python คือพจนานุกรมซึ่งอนุญาตให้บันทึก "คีย์" เพื่อค้นหา "ค่า" ทุกประเภท สิ่งนี้ถูกนำไปใช้ภายในเป็นตารางแฮชหรือไม่ ถ้าไม่มันคืออะไร

15
ฟังก์ชั่นแฮชที่ดีสำหรับเงื่อนไข
ฉันพยายามคิดถึงฟังก์ชันแฮชที่ดีสำหรับสตริง และฉันคิดว่ามันเป็นความคิดที่ดีที่จะสรุปค่ายูนิโค้ดของอักขระห้าตัวแรกในสตริง (สมมติว่ามีห้าตัวหรือหยุดที่จุดสิ้นสุด) นั่นเป็นความคิดที่ดีหรือไม่หรือเป็นสิ่งที่ไม่ดี? ฉันกำลังทำสิ่งนี้ใน Java แต่ฉันไม่คิดว่าจะสร้างความแตกต่างได้มากนัก
160 java  hash  hashtable  hashcode 

6
วิธีที่ถูกต้องและดีในการติดตั้ง __hash __ () คืออะไร
วิธีที่ถูกต้องและดีในการใช้__hash__()คืออะไร? ฉันกำลังพูดถึงฟังก์ชั่นที่คืนค่าแฮชโค้ดที่ใช้แทรกวัตถุลงในพจนานุกรมแฮชเทเบิลหรือที่รู้จักกันในชื่อ เมื่อ__hash__()คืนค่าจำนวนเต็มและใช้สำหรับวัตถุ "binning" ใน hashtables ฉันคิดว่าค่าของจำนวนเต็มที่ส่งคืนควรกระจายอย่างสม่ำเสมอสำหรับข้อมูลทั่วไป (เพื่อลดการชน) การปฏิบัติที่ดีในการรับค่าดังกล่าวคืออะไร การชนเป็นปัญหาหรือไม่ ในกรณีของฉันฉันมีชั้นเรียนขนาดเล็กซึ่งทำหน้าที่เป็นคลาสคอนเทนเนอร์ที่มี ints บางอย่างลอยบางและสตริง

8
ฉันจะเลือกระหว่าง Hash Table กับ Trie (Prefix Tree) ได้อย่างไร
ดังนั้นถ้าฉันต้องเลือกระหว่างตารางแฮชหรือต้นไม้นำหน้าอะไรคือปัจจัยแบ่งแยกที่จะทำให้ฉันเลือกอย่างใดอย่างหนึ่ง จากมุมมองที่ไร้เดียงสาของฉันดูเหมือนว่าการใช้ Trie จะมีค่าใช้จ่ายพิเศษบางอย่างเนื่องจากไม่ได้จัดเก็บเป็นอาร์เรย์ แต่ในแง่ของเวลาทำงาน (สมมติว่าคีย์ที่ยาวที่สุดคือคำภาษาอังกฤษที่ยาวที่สุด) โดยพื้นฐานแล้วอาจเป็น O (1) (สัมพันธ์กับขอบเขตบน) บางทีคำภาษาอังกฤษที่ยาวที่สุดคือ 50 ตัวอักษร? ตารางแฮชมีรูปลักษณ์ทันทีขึ้นเมื่อคุณได้รับดัชนี การแฮ็กคีย์เพื่อรับดัชนี แต่ดูเหมือนว่าจะทำได้อย่างง่ายดายเกือบ 50 ขั้นตอน ใครช่วยให้มุมมองที่มีประสบการณ์มากกว่านี้แก่ฉันได้ไหม ขอบคุณ!

9
ฟังก์ชันแฮชสำหรับสตริง
ฉันกำลังทำงานกับตารางแฮชในภาษาซีและฉันกำลังทดสอบฟังก์ชันแฮชสำหรับสตริง ฟังก์ชั่นแรกที่ฉันได้ลองคือเพิ่มรหัส ascii และใช้ modulo (% 100) แต่ฉันได้ผลลัพธ์ที่ไม่ดีกับการทดสอบข้อมูลครั้งแรก: 40 การชนกันสำหรับ 130 คำ ข้อมูลอินพุตสุดท้ายจะมี 8,000 คำ (เป็นพจนานุกรมที่เก็บไว้ในไฟล์) ตารางแฮชถูกประกาศเป็นตาราง int [10000] และมีตำแหน่งของคำในไฟล์ txt คำถามแรกคืออัลกอริทึมใดที่ดีที่สุดสำหรับการแฮชสตริง และจะกำหนดขนาดของตารางแฮชได้อย่างไร? ขอบคุณล่วงหน้า ! :-)


8
ตารางแฮชสามารถเป็น O (1) ได้หรือไม่?
ดูเหมือนจะเป็นความรู้ทั่วไปที่ตารางแฮชสามารถบรรลุ O (1) ได้ แต่นั่นไม่เคยมีเหตุผลสำหรับฉัน ใครช่วยอธิบายหน่อยได้ไหม นี่คือสองสถานการณ์ที่อยู่ในใจ: A. ค่าเป็น int ที่เล็กกว่าขนาดของตารางแฮช ดังนั้นค่าจึงเป็นแฮชของตัวเองดังนั้นจึงไม่มีตารางแฮช แต่ถ้ามีก็จะเป็น O (1) และยังไม่มีประสิทธิภาพ B. คุณต้องคำนวณแฮชของค่า ในสถานการณ์นี้ลำดับคือ O (n) สำหรับขนาดของข้อมูลที่กำลังค้นหา การค้นหาอาจเป็น O (1) หลังจากที่คุณทำงาน O (n) แต่ก็ยังคงออกมาสู่ O (n) ในสายตาของฉัน และเว้นแต่คุณจะมีแฮชที่สมบูรณ์แบบหรือตารางแฮชขนาดใหญ่อาจมีหลายรายการต่อถัง ดังนั้นมันจึงกลายเป็นการค้นหาเชิงเส้นเล็ก ๆ ในบางจุดอยู่ดี ฉันคิดว่าตารางแฮชนั้นยอดเยี่ยม แต่ฉันไม่ได้รับการกำหนด O (1) เว้นแต่จะเป็นเพียงทฤษฎีเท่านั้น บทความของ Wikipedia สำหรับตารางแฮชอ้างอิงเวลาในการค้นหาคงที่อย่างสม่ำเสมอและไม่สนใจค่าใช้จ่ายของฟังก์ชันแฮชโดยสิ้นเชิง นั่นเป็นมาตรการที่ยุติธรรมจริงหรือ? แก้ไข:เพื่อสรุปสิ่งที่ฉันเรียนรู้: เป็นความจริงในทางเทคนิคเนื่องจากฟังก์ชันแฮชไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในคีย์และอาจเป็นเวลาที่คงที่และเนื่องจากตารางที่มีขนาดใหญ่เพียงพอสามารถทำให้การชนกันลงไปใกล้เวลาคงที่ มันเป็นความจริงในทางปฏิบัติเพราะเมื่อเวลาผ่านไปมันจะใช้งานได้ตราบเท่าที่ฟังก์ชันแฮชและขนาดตารางถูกเลือกเพื่อลดการชนกันแม้ว่านั่นมักจะหมายถึงการไม่ใช้ฟังก์ชันแฮชเวลาคงที่

8
ทูเปิล (หรืออาร์เรย์) เป็นปุ่มพจนานุกรมใน C #
ฉันกำลังพยายามสร้างตารางค้นหาพจนานุกรมใน C # ฉันต้องการแก้ไขค่า 3 ทูเพิลเป็นสตริงเดียว ฉันลองใช้อาร์เรย์เป็นคีย์ แต่ก็ไม่ได้ผลและฉันไม่รู้จะทำอะไรอีก ณ จุดนี้ฉันกำลังพิจารณาทำ Dictionary of Dictionaries of Dictionaries แต่มันอาจจะดูไม่สวยเท่าไหร่นักแม้ว่าฉันจะทำมันในจาวาสคริปต์ก็ตาม

18
ข้อดีของการค้นหาแบบไบนารีบนตารางแฮช
ข้อดีของต้นไม้ค้นหาแบบไบนารีบนตารางแฮชคืออะไร? ตารางแฮชสามารถค้นหาองค์ประกอบใดก็ได้ใน Theta (1) ครั้งและการเพิ่มองค์ประกอบนั้นง่ายพอ ๆ กัน .... แต่ฉันไม่แน่ใจว่าจะได้เปรียบในทางอื่น

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