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

คำถามเกี่ยวกับวิธีการจัดเก็บข้อมูลเพื่อให้สามารถใช้ประโยชน์จากอัลกอริทึม

4
การคำนวณความแตกต่างระหว่างชุดใหญ่สองชุด
ฉันมีจำนวนเต็มและB จำนวนมาก แต่ละชุดมีประมาณหนึ่งล้านรายการและแต่ละรายการเป็นจำนวนเต็มบวกที่มีความยาวสูงสุด 10 หลัก AAABBB อัลกอริทึมที่ดีที่สุดในการคำนวณและB ∖ Aคืออะไร กล่าวอีกนัยหนึ่งฉันจะคำนวณรายการของAที่ไม่มีในBและในทางกลับกันได้อย่างมีประสิทธิภาพได้อย่างไร อะไรคือโครงสร้างข้อมูลที่ดีที่สุดในการเป็นตัวแทนของสองชุดนี้เพื่อให้การดำเนินการเหล่านี้มีประสิทธิภาพA∖BA∖BA\setminus BB∖AB∖AB\setminus AAAABBB วิธีที่ดีที่สุดที่ฉันสามารถทำได้คือเก็บสองชุดนี้เป็นรายการที่เรียงลำดับแล้วเปรียบเทียบทุกองค์ประกอบของกับทุกองค์ประกอบของBในแบบเชิงเส้น เราทำได้ดีกว่านี้ไหมAAABBB

1
Universal Hashing ในทางปฏิบัติ
ตระกูลของฟังก์ชันแฮชเป็นสากลถ้า คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับวิกิพีเดียคร่ำเครียดสากลนี้บทความHHHh : คุณ→ { 0 , … , M- 1 }ชั่วโมง:ยู→{0,...,M-1}h: U \rightarrow \{0,\ldots,M-1\}∀ x , y∈ คุณ, x ≠ y⇒ ประชาสัมพันธ์h ∈ H[ h ( x ) = h ( y) ] ≤ 1M∀x,Y∈ยู,x≠Y⇒ราคาชั่วโมง∈H[ชั่วโมง(x)=ชั่วโมง(Y)]≤1M\forall x,y \in U, x \neq y \Rightarrow \Pr_{h \in H}[h(x) = h(y)] \leq \frac{1}{M} …

3
โครงสร้างข้อมูลที่มีประสิทธิภาพรองรับการแทรกการลบและ MostFrequent
สมมติว่าเรามีชุดDDDและสมาชิกแต่ละคนเป็นคู่ข้อมูลและคีย์ เราต้องการโครงสร้างข้อมูลที่จะสนับสนุนการดำเนินการต่อไปนี้:DDD แทรกเข้า ,(d,k)(d,k)(d,k)DDD ลบสมาชิก (ไม่จำเป็นต้องค้นหาเพื่อค้นหาเช่นชี้ไปที่สมาชิกใน )eeeeeeeeeDDD MostFrequent ซึ่งส่งคืนสมาชิกเช่นนั้นเป็นหนึ่งในคีย์ที่พบบ่อยที่สุดใน (โปรดทราบว่าคีย์ที่บ่อยที่สุดไม่จำเป็นต้องไม่ซ้ำกัน)e∈De∈De \in De.keye.keye.keyDDD การใช้โครงสร้างข้อมูลนี้อย่างมีประสิทธิภาพคืออะไร โซลูชันของฉันคือฮีปสำหรับคีย์และความถี่ที่จัดลำดับความสำคัญด้วยความถี่พร้อมกับตารางแฮชที่ฟังก์ชันแฮชจะแมปสมาชิกที่มีคีย์เดียวกันกับสล็อตเดียวกันในตารางแฮช สิ่งนี้สามารถให้สำหรับการดำเนินการสองครั้งแรกและสำหรับครั้งที่สาม (เวลาที่เลวร้ายที่สุดในการรันกรณี)Θ(lgn)Θ(lg⁡n)\Theta(\lg n)Θ(1)Θ(1)\Theta(1) ฉันสงสัยว่ามีวิธีแก้ปัญหาที่มีประสิทธิภาพมากกว่านี้ไหม (หรือโซลูชันที่เรียบง่ายกว่าที่มีประสิทธิภาพเท่ากันใช่หรือไม่)

2
การแทนตัวเลขเชิงลบและจำนวนเชิงซ้อนโดยใช้แคลคูลัสแลมบ์ดา
บทเรียนส่วนใหญ่เกี่ยวกับแลมบ์ดาแคลคูลัสให้ตัวอย่างที่ฟังก์ชัน Integers และ Booleans ที่เป็นบวกสามารถแสดงได้ -1 แล้วฉันล่ะ

2
พิสูจน์ต้นไม้ไบนารีได้มากที่สุด
ฉันพยายามพิสูจน์ว่าต้นไม้ไบนารีที่มีnnn nodes มีไม่เกิน⌈n2⌉⌈n2⌉\left\lceil \frac{n}{2} \right\rceilใบ ฉันจะทำสิ่งนี้ด้วยการเหนี่ยวนำได้อย่างไร สำหรับคนที่ได้รับการต่อไปนี้ในคำถามเดิมเกี่ยวกับกองจะได้รับการย้ายที่นี่

1
งานวิจัยเกี่ยวกับการประเมินประสิทธิภาพของการลืมแคชในทางปฏิบัติ
อัลกอริทึมแคชและโครงสร้างข้อมูลที่ลืมเลือนเป็นสิ่งที่ค่อนข้างใหม่แนะนำโดย Frigo et al ในขั้นตอนวิธีการแคชลบเลือน 1999 วิทยานิพนธ์ของ Prokop ในปีเดียวกันนั้นได้เสนอแนวคิดเบื้องต้นเช่นกัน กระดาษโดย Frigo และคณะ นำเสนอผลการทดลองแสดงให้เห็นถึงศักยภาพของทฤษฎีและอัลกอริธึมที่ขาดการแคชและโครงสร้างข้อมูล โครงสร้างข้อมูลที่ลืมแคชจำนวนมากขึ้นอยู่กับโครงสร้างการค้นหาแบบสแตติก วิธีการจัดเก็บและสำรวจต้นไม้เหล่านี้ได้รับการพัฒนามาไม่มากนักโดยเฉพาะอย่างยิ่ง Bender et al และโดย Brodal และคณะ Demaine ให้ดีภาพรวม งานทดลองของการตรวจสอบพฤติกรรมแคชในทางปฏิบัติได้ทำอย่างน้อยโดย Ladner และคณะ ในการเปรียบเทียบแคชรอบรู้และ Cache ลบเลือนคงค้นหาต้นไม้โดยใช้โปรแกรม Instrumentation 2002 Ladner และคณะ เปรียบเทียบพฤติกรรมแคชของอัลกอริทึมในการแก้ปัญหาการค้นหาแบบไบนารีโดยใช้อัลกอริธึมแบบคลาสสิกอัลกอริธึมที่ลืมแคชและอัลกอริธึมที่รับรู้แคช อัลกอริทึมแต่ละตัวถูกเปรียบเทียบกับวิธีการนำทางทั้งทางตรงและทางอ้อม นอกจากนี้วิทยานิพนธ์ของRønn, 2003 ได้วิเคราะห์อัลกอริธึมเดียวกันให้มีรายละเอียดค่อนข้างสูงและยังทำการทดสอบอัลกอริทึมเดียวกันกับ Ladner และคณะ คำถามของฉันคือ มีการวิจัยใหม่ ๆ เกี่ยวกับการเปรียบเทียบพฤติกรรมแคชของอัลกอริธึมการลืมแคชในทางปฏิบัติตั้งแต่นั้นมาหรือไม่? ฉันสนใจโดยเฉพาะอย่างยิ่งในประสิทธิภาพของแผนภูมิการค้นหาแบบคงที่ แต่ฉันก็จะมีความสุขกับอัลกอริทึมและโครงสร้างข้อมูลที่ลืมแคชอื่น ๆ

1
มีโครงสร้างข้อมูลสำหรับ semilattices คล้ายกับโครงสร้างข้อมูลแบบต้นไม้หรือไม่?
หากเราถือว่าต้นไม้เป็นชุดสั่งบางส่วนมันจะกลายเป็นกรณีพิเศษของการเข้าร่วม semilattice สำหรับการเข้าร่วม semilattice เราต้องการให้สามารถคำนวณ (ไม่ซ้ำ) ขอบเขตบนน้อยที่สุดของสององค์ประกอบ (มากหรือน้อย) ได้อย่างมีประสิทธิภาพ ในกรณีของต้นไม้โครงสร้างข้อมูลที่จะเปิดใช้งานสิ่งนี้จะเก็บไว้สำหรับแต่ละองค์ประกอบในโหนดที่สอดคล้องกันตัวชี้ไปยังผู้ปกครองและวัดระยะทางไปยังราก (อันที่จริงแล้วการติดฉลากบนพื้นฐานของการจัดเรียงทอพอโลยีมักใช้สำหรับ "การวัดระยะทางไปยังราก" อย่างมีประสิทธิภาพสิ่งที่จำเป็นคือการสั่งซื้อบางส่วนที่เข้ากันได้ซึ่งสามารถประเมินได้อย่างมีประสิทธิภาพ) การเข้าร่วม semilattice แต่ละอัน จำกัด สามารถแสดงเป็นเซตย่อยของเซต จำกัด ที่มีการบรรจุตามลำดับเพื่อให้ขอบเขตบนน้อยที่สุดได้รับจากการรวมกันของชุด ดังนั้นการแทนแต่ละองค์ประกอบด้วยจำนวน จำกัด ของแท็กและการคำนวณขอบเขตบนน้อยที่สุดโดยการรวมกันของแท็กที่เกี่ยวข้องจะเป็นโครงสร้างข้อมูลที่เป็นไปได้หนึ่ง (โดยการมองที่ส่วนประกอบเราเห็นว่าการกำหนดขอบเขตบนน้อยที่สุดในขณะที่จุดตัดของแท็กที่สอดคล้องกันก็อาจเป็นไปได้ด้วย) โครงสร้างข้อมูลทั่วไปที่ใช้กันทั่วไปก็คือใช้เมทริกซ์เพื่อเก็บผลลัพธ์ทั้งหมดของ "a <= b "หรือแม้แต่ผลลัพธ์ทั้งหมดของ" เข้าร่วม (a, b) " อย่างไรก็ตามการใช้โครงสร้างข้อมูลดังกล่าวเพื่อเป็นตัวแทนของต้นไม้น่าจะแปลก มีโครงสร้างข้อมูลที่เหมือนต้นไม้มากขึ้นสำหรับ semilattices เข้าร่วมซึ่งยังอนุญาตให้มีการคำนวณที่มีประสิทธิภาพ (มากหรือน้อย) ของขอบเขต (ไม่ซ้ำ) ที่มีขอบเขตน้อยที่สุดของสององค์ประกอบ (อาจมีกราฟอะซิไซลิกกำกับด้วยข้อมูลเพิ่มเติมในโหนดที่คล้ายกับการวัดระยะทางถึงรากของต้นไม้)

2
จำนวนพา ธ การค้นหาที่เป็นไปได้เมื่อค้นหาใน BST
ฉันมีคำถามต่อไปนี้ แต่ไม่มีคำตอบสำหรับเรื่องนี้ ฉันจะขอบคุณถ้าวิธีการของฉันถูกต้อง: Q. เมื่อค้นหาค่าคีย์ 60 ในแผนผังการค้นหาแบบไบนารีโหนดที่มีค่าคีย์ 10, 20, 40, 50, 70, 80, 90 จะถูกสำรวจไม่จำเป็นต้องเรียงตามลำดับที่กำหนด คำสั่งซื้อที่แตกต่างกันมีความเป็นไปได้เท่าใดที่ค่าคีย์เหล่านี้สามารถเกิดขึ้นได้บนเส้นทางการค้นหาจากโหนดรูทที่มีค่า 60 (A) 35 (B) 64 (C) 128 (D) 5040 จากคำถามฉันเข้าใจว่าโหนดทั้งหมดที่ให้ไว้จะต้องรวมอยู่ในการสำรวจเส้นทางและท้ายที่สุดเราต้องไปถึงที่สำคัญเช่น 60 ตัวอย่างเช่นการรวมกันอย่างใดอย่างหนึ่งจะเป็น: 10, 20, 40, 50, 90, 80, 70, 60 เนื่องจากเราต้องข้ามโหนดทั้งหมดที่ระบุข้างต้นเราต้องเริ่มต้นด้วย 10 หรือ 90 ถ้าเราเริ่มต้นด้วย 20 เราจะไม่ถึง 10 (ตั้งแต่ 60> 20 และเราจะทรีย่อยทรีขวาของ 20) ในทำนองเดียวกันเราไม่สามารถเริ่มต้นด้วย …


2
โครงสร้างข้อมูล snapshottable ที่ดีสำหรับดัชนีในหน่วยความจำ
ฉันออกแบบฐานข้อมูลวัตถุในหน่วยความจำสำหรับกรณีการใช้งานที่เฉพาะเจาะจง เป็นนักเขียนเดียว แต่ต้องสนับสนุนการอ่านพร้อมกันอย่างมีประสิทธิภาพ การอ่านต้องถูกแยกออก ไม่มีภาษาของแบบสอบถามฐานข้อมูลรองรับเท่านั้น: รับวัตถุ / -s โดยคุณลักษณะ / ชุดของคุณลักษณะ (อาจมีการสนับสนุนสำหรับการแสดงออกเช่นx.count < 5) รับคุณลักษณะของวัตถุ แบบสอบถามเป็นสคริปต์ที่จำเป็นซึ่งประกอบด้วยจำนวนการดำเนินการข้างต้นโดยพลการ ขนาดข้อมูลจะเป็นหน่วยความจำ << ดังนั้นวัตถุและดัชนีทั้งหมดของคุณลักษณะส่วนใหญ่ควรพอดีอย่างสะดวกสบายโดยไม่ต้องสลับ สิ่งที่ฉันต้องการคือโครงสร้างข้อมูลสำหรับดัชนีแอ็ตทริบิวต์ของวัตถุซึ่งสามารถเป็น O (n) กับการเขียนไม่สนับสนุนการเขียนพร้อมกัน แต่ควรสนับสนุนการถ่ายภาพ O (1) อย่างสมบูรณ์ (อาจคัดลอกบนการเขียน) และ O (logN) เป็นการดีที่มันจะช่วยให้การทำงานพร้อมกันสูงในการอ่านที่มีการแบ่งปันโครงสร้างสูงสุดระหว่างรุ่น ฉันกำลังดูCTries , BSTsที่เกิดขึ้นพร้อมกันและต้นไม้ Splay ที่เกิดขึ้นพร้อมกันแต่ฉันไม่แน่ใจว่าฉันกำลังมองไปในทิศทางที่ถูกต้องที่นี่หรือไม่ โครงสร้างด้านบนให้ความสนใจอย่างมากกับความซับซ้อนของเม็ดมีดซึ่งฉันไม่สนใจ คำถาม : มีโครงสร้างข้อมูลที่รู้จักที่เหมาะสมกับกรณีการใช้งานของฉันหรือไม่? แก้ไข : หลังจากคิดเพิ่มเติมบางอย่างดูเหมือนว่าต้นไม้ BST / Splay ถาวรจะทำงาน ผู้เขียนจะอัปเดตสำเนา 'ต้นแบบ' …

4
อะไรคือข้อดีของการมีนกกาเหว่าคร่ำเครียดมากกว่าการแฮชที่สมบูรณ์แบบแบบไดนามิก?
ตารางแฮชที่สมบูรณ์แบบไดนามิกและตารางแฮชของนกกาเหว่าเป็นโครงสร้างข้อมูลที่แตกต่างกันสองแบบที่รองรับการค้นหา O (1) กรณีที่เลวร้ายที่สุดและ O (1) การแทรกและการลบตามเวลาที่คาดการณ์ไว้ ทั้งสองต้องการพื้นที่เสริม O (n) และการเข้าถึงตระกูลแฮชฟังก์ชันสำหรับการดำเนินการ ฉันคิดว่าโครงสร้างข้อมูลทั้งสองนี้มีความสวยงามและยอดเยี่ยมในตัวของมันเอง แต่ฉันไม่แน่ใจว่าฉันจะเห็นได้อย่างไรว่าเมื่อใดหนึ่งในโครงสร้างเหล่านี้จะดีกว่ากัน มีบริบทเฉพาะใดในโครงสร้างข้อมูลใดข้อมูลหนึ่งที่มีข้อได้เปรียบที่ชัดเจนกว่าอีก? หรือพวกเขาส่วนใหญ่ใช้แทนกันได้?

2
การค้นหาองค์ประกอบที่เล็กที่สุดของ k'th จากลำดับที่กำหนดไว้เฉพาะกับหน่วยความจำ O (k) เวลา O (n)
สมมติว่าเราอ่านลำดับของตัวเลขnnnทีละตัว วิธีค้นหาองค์ประกอบที่เล็กที่สุดของkkkเพียงแค่ใช้หน่วยความจำเซลล์O(k)O(k)O(k)และในเวลาเชิงเส้น ( O(n)O(n)O(n) ) ผมคิดว่าเราควรบันทึกแรกkkkแง่ของลำดับและเมื่อได้รับk+1k+1k+1 'ระยะ TH ลบคำซึ่งเราแน่ใจว่ามันไม่สามารถที่kkk ' องค์ประกอบที่เล็ก TH แล้วบันทึกk+1k+1k+1 'ระยะ TH ดังนั้นเราควรมีตัวบ่งชี้ที่แสดงคำที่ใช้ไม่ได้ในแต่ละขั้นตอนและตัวบ่งชี้นี้ควรได้รับการอัปเดตในแต่ละขั้นตอนอย่างรวดเร็ว ฉันเริ่มต้นด้วย"สูงสุด"; แต่มันไม่สามารถอัพเดทได้อย่างรวดเร็ว หมายความว่าหากเราพิจารณาค่าสูงสุดแล้วในการลบครั้งแรกเราพลาดค่าสูงสุดและเราควรค้นหาค่าสูงสุดในO(k)O(k)O(k)และสาเหตุ(n−k)×O(k)(n−k)×O(k)(n-k)\times O(k)เวลาที่ไม่เป็นเชิงเส้น บางทีเราควรบันทึกลำดับของkkkลำดับแรกอย่างชาญฉลาดยิ่งขึ้น ฉันจะแก้ปัญหานี้ได้อย่างไร

2
การใช้งานโครงสร้างข้อมูลแบบไม่คงที่ (ถาวร) เหมือนอาร์เรย์ที่มีการจัดทำดัชนีอย่างรวดเร็วผนวกผนวกซ้ำ
ฉันกำลังมองหาโครงสร้างข้อมูลถาวรคล้ายกับอาเรย์ (แต่ไม่เปลี่ยนรูป) ให้การดำเนินการจัดทำดัชนีอย่างรวดเร็วผนวกต่อเติมและทำซ้ำ (ตำแหน่งที่ดี) Clojure ให้ Vector แบบถาวร แต่มันเป็นเพียงการผนวกที่รวดเร็วเท่านั้น เวกเตอร์ของ Scala มีการเพิ่มและต่อเติมอย่างต่อเนื่องอย่างมีประสิทธิภาพ แต่ฉันไม่สามารถนำมาใช้ได้เนื่องจากมันขึ้นอยู่กับโครงสร้างข้อมูลเดียวกัน (bit-mapped vector trie) เป็นเวกเตอร์ Clojure และอย่างที่ฉันเข้าใจ trie เวกเตอร์บิตแมป ไม่สามารถเพิ่มความเร็วได้อย่างรวดเร็วหากไม่มีเทคนิคบางอย่าง ฉันสนใจที่จะไม่พร้อมใช้งานการใช้งาน แต่ในรายละเอียดของวิธีการใช้โครงสร้างข้อมูลดังกล่าวด้วยตนเอง

1
โครงสร้างข้อมูลสำหรับแผนที่เป็นระยะ
ให้เป็นจำนวนเต็มและให้แทนเซตของจำนวนเต็มทั้งหมด ลองแสดงว่าช่วงเวลาของจำนวนเต็ม\}nnnZZ\mathbb{Z}[a,b][a,b][a,b]{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\} ฉันกำลังมองหาโครงสร้างข้อมูลที่จะเป็นตัวแทนของแผนที่{Z} ฉันต้องการโครงสร้างข้อมูลเพื่อสนับสนุนการดำเนินการต่อไปนี้:f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z} get(i)get(i)\text{get}(i)ควรกลับ(i)f(i)f(i)f(i) set([a,b],y)set([a,b],y)\text{set}([a,b],y)ควรปรับปรุงเพื่อให้คือการปรับปรุงไปแผนที่ใหม่ดังกล่าวว่าสำหรับและสำหรับb]ffff(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=yffff′f′f'f′(i)=yf′(i)=yf'(i) = yi∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)i∉[a,b]i∉[a,b]i \notin [a,b] stab(i)stab(i)\text{stab}(i)ควรกลับช่วงเวลาที่ใหญ่ที่สุดเช่นนั้นและเป็นค่าคงที่ใน (เช่น )[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) add([a,b],δ)add([a,b],δ)\text{add}([a,b],\delta)ควรอัปเดตเป็นแผนที่ใหม่เช่นนั้นสำหรับและffff′f′f'f′(i)=f(i)+δf′(i)=f(i)+δf'(i) = f(i) + \deltai∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)สำหรับi∉[a,b]i∉[a,b]i \notin [a,b] ] ฉันต้องการให้การดำเนินการแต่ละอย่างมีประสิทธิภาพ ฉันจะนับเวลาหรืออย่างมีประสิทธิภาพ แต่เวลาช้าเกินไป มันก็โอเคถ้าเวลาการทำงานถูกตัดจำหน่ายเวลาการทำงาน มีโครงสร้างข้อมูลที่ทำให้การดำเนินการทั้งหมดเหล่านี้ไปพร้อม ๆO(1)O(1)O(1)O(lgn)O(lg⁡n)O(\lg n)O(n)O(n)O(n) (ฉันสังเกตเห็นรูปแบบที่คล้ายกันเกิดขึ้นในการท้าทายการเขียนโปรแกรมหลายอย่างนี่เป็นลักษณะทั่วไปที่เพียงพอสำหรับปัญหาการท้าทายเหล่านั้นทั้งหมด)

3
หนังสืออัลกอริทึมในหัวข้อต่างๆ
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันได้รับมอบหมายให้สร้างห้องสมุดหนังสือเกี่ยวกับอัลกอริทึมสำหรับ บริษัท ขนาดเล็กของเรา (ประมาณ 15 คน) งบประมาณมากกว่า 5k แต่น้อยกว่า 10k แน่นอนดังนั้นฉันสามารถซื้อหนังสือได้พอใช้ ทุกคนที่นี่มีอย่างน้อยปริญญาตรีใน CS หรือสาขาที่เกี่ยวข้องอย่างใกล้ชิดดังนั้นในขณะที่ฉันจะได้รับหนังสือเรียนพื้นฐานเช่น Cormen ฉันสนใจหนังสือที่ดีในหัวข้อขั้นสูง (ฉันจะได้รับเล่ม 4 ของ Knuth, BTW) รายการหัวข้อบางส่วนจะเป็น: ขั้นตอนวิธีการเรียงลำดับ อัลกอริธึมกราฟ อัลกอริธึมสตริง อัลกอริทึมแบบสุ่ม อัลกอริทึมแบบกระจาย อัลกอริทึม Combinatorial เป็นต้น โดยพื้นฐานแล้วฉันกำลังมองหาคำแนะนำที่ดีเกี่ยวกับหนังสือในหัวข้อที่สำคัญภายใน CS ที่เกี่ยวข้องกับอัลกอริทึมและโครงสร้างข้อมูล โดยเฉพาะอย่างยิ่งสิ่งที่นอกเหนือไปจากสิ่งที่ครอบคลุมโดยทั่วไปในชั้นเรียนอัลกอริทึมและโครงสร้างข้อมูลซึ่งเป็นส่วนหนึ่งของปริญญาตรีในโรงเรียนที่ดี ฉันรู้ว่าคำถามนั้นค่อนข้างคลุมเครือเนื่องจากฉันกำลังมองหาวัสดุที่มีประโยชน์โดยทั่วไป ซอฟต์แวร์ที่เราพัฒนานั้นส่วนใหญ่เป็นระบบที่จัดการกับข้อมูลจำนวนมาก อุดมคติก็คือการค้นหาสิ่งใดก็ตามที่จะครอบคลุมโครงสร้างและอัลกอริธึมเจ๋ง ๆ ล่าสุดที่คนส่วนใหญ่อาจไม่เคยได้ยินมาก่อน แก้ไข: นี่คือหนังสือเบื้องต้นที่ฉันคิดว่าฉันควรได้รับ: รู้เบื้องต้นเกี่ยวกับอัลกอริทึมโดย Cormen และคณะ การออกแบบอัลกอริทึมโดย Kleinberg, Tardos …

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