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

คำถามเกี่ยวกับการจัดเก็บอย่างมีประสิทธิภาพและการแสดงข้อมูลภายในแอปพลิเคชันซอฟต์แวร์

2
อะไรคือความแตกต่างของเนื้อหาระหว่างวิทยานิพนธ์ของคริสโอกาซากิในปี 1996 และหนังสือ 1999, โครงสร้างข้อมูลที่ใช้งานได้อย่างแท้จริง? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการ4 ปีที่แล้ว ฉันต้องการอ่านโครงสร้างข้อมูลที่ทำงานได้อย่างหมดจด ฉันได้พบวิทยานิพนธ์ (ซึ่งสามารถใช้งานได้อย่างอิสระในรูปแบบ PDF)แต่เห็นว่ามีหนังสือเล่มหนึ่งให้ด้วย ดังนั้นฉันอยากรู้ว่าอะไรคือความแตกต่างระหว่างสองสิ่งพิมพ์นี้

4
นักพัฒนาควรรู้อัลกอริทึมและโครงสร้างข้อมูลใดบ้าง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ฉันต้องการเป็นนักพัฒนา Java องค์กรที่ประสบความสำเร็จ อัลกอริทึมและโครงสร้างข้อมูลใดที่ฉันควรมีประสบการณ์ คุณจะแนะนำหนังสืออะไรให้ฉัน ในการเป็นผู้พัฒนา Java ที่ประสบความสำเร็จฉันจำเป็นต้องรู้อัลกอริธึมขั้นสูงทั้งหมดเช่นที่ได้รับในCLRSหรือไม่? คุณสามารถแนะนำรายการหัวข้อที่ฉันควรเรียนรู้ตามลำดับจากมากไปน้อย ฉันต้องรู้ไหม: ที่ไหน? เรียงลำดับ? กราฟ / ต้นไม้? etc?

8
เหตุใดการใช้คีย์สตริงจึงถือว่าเป็นความคิดที่ไม่ดี
สิ่งนี้ได้ดักฟังฉันมาระยะหนึ่งแล้ว เวลาส่วนใหญ่เมื่อมันมาถึงการจัดเก็บข้อมูลในโครงสร้างเช่นแฮชเทเบิลโปรแกรมเมอร์หนังสือและบทความยืนยันว่าองค์ประกอบการจัดทำดัชนีในโครงสร้างดังกล่าวโดยค่าสตริงถือว่าเป็นการปฏิบัติที่ไม่ดี ถึงกระนั้นฉันยังไม่พบแหล่งข้อมูลดังกล่าวเพียงแหล่งเดียวเพื่ออธิบายว่าทำไมจึงถือว่าเป็นการปฏิบัติที่ไม่ดี มันขึ้นอยู่กับภาษาการเขียนโปรแกรมหรือไม่? ในกรอบพื้นฐาน? เกี่ยวกับการใช้งานหรือไม่ ยกตัวอย่างง่ายๆสองอย่างถ้าช่วยได้: ตารางคล้าย SQL ที่แถวถูกทำดัชนีโดยคีย์หลักของสตริง . NET Dictionary ที่มีรหัสเป็น Strings

4
Data Oriented Design - ทำไม่ได้กับสมาชิกมากกว่า 1-2 โครงสร้าง?
ตัวอย่างปกติของ Data Oriented Design ที่มีโครงสร้าง Ball: struct Ball { float Radius; float XYZ[3]; }; แล้วพวกเขาก็สร้างอัลกอริทึมที่วนซ้ำstd::vector<Ball>เวกเตอร์ จากนั้นพวกเขาก็ให้สิ่งเดียวกัน แต่นำไปใช้ใน Data Oriented Design: struct Balls { std::vector<float> Radiuses; std::vector<XYZ[3]> XYZs; }; ซึ่งเป็นสิ่งที่ดีและทั้งหมดถ้าคุณจะทำซ้ำรัศมีทั้งหมดก่อนอื่นจากนั้นทุกตำแหน่งและอื่น ๆ อย่างไรก็ตามคุณจะย้ายลูกบอลในเวกเตอร์ได้อย่างไร ในรุ่นเดิมหากคุณมีstd::vector<Ball> BallsAllคุณก็สามารถย้ายใดๆBallsAll[x]BallsAll[y] อย่างไรก็ตามในการทำเช่นนั้นสำหรับ Data Oriented เวอร์ชั่นคุณต้องทำสิ่งเดียวกันสำหรับทุก ๆ คุณสมบัติ (2 ครั้งในกรณีของ Ball - radius and position) แต่มันจะแย่ลงถ้าคุณมีคุณสมบัติมากขึ้น คุณจะต้องเก็บดัชนีสำหรับ "ลูกบอล" แต่ละลูกและเมื่อคุณพยายามที่จะย้ายไปรอบ …

4
คำจำกัดความของ "ข้อมูลขนาดใหญ่" คืออะไร?
มีหรือไม่ คำจำกัดความทั้งหมดที่ฉันสามารถหาได้อธิบายขนาดความซับซ้อน / ความหลากหลายหรือความเร็วของข้อมูล คำจำกัดความของวิกิพีเดียเป็นสิ่งเดียวที่ฉันพบด้วยจำนวนจริง ขนาดข้อมูลขนาดใหญ่เป็นเป้าหมายที่เคลื่อนไหวอยู่ตลอดเวลาตั้งแต่ปี 2555 ตั้งแต่ไม่กี่โหลเทราไบต์ไปจนถึงระดับเพตาไบต์จำนวนมากในชุดข้อมูลเดียว อย่างไรก็ตามสิ่งนี้ดูเหมือนจะขัดแย้งกับคำนิยาม MIKE2.0ซึ่งอ้างอิงในย่อหน้าถัดไปซึ่งบ่งชี้ว่าข้อมูล "ใหญ่" อาจมีขนาดเล็กและเซ็นเซอร์ 100,000 ตัวบนเครื่องบินที่สร้างข้อมูลเพียง 3GB เท่านั้นถือว่าใหญ่ ไอบีเอ็มแม้จะพูดว่า: ข้อมูลขนาดใหญ่นั้นง่ายกว่าเรื่องของขนาด มีขนาดการเน้นย้ำในความหมายของพวกเขา O'Reilly ได้เน้น "volume, velocity and variety"เช่นกัน แม้ว่าจะอธิบายได้ดีและในเชิงลึกยิ่งขึ้นความหมายดูเหมือนว่าจะเป็นการแฮชของผู้อื่น - หรือในทางกลับกันแน่นอน ผมคิดว่าคอมพิวเตอร์รายสัปดาห์บทความชื่อผลรวมถึงจำนวนของบทความค่อนข้างดี"อะไรคือข้อมูลขนาดใหญ่และวิธีที่จะสามารถนำมาใช้เพื่อให้ได้เปรียบในการแข่งขัน" แต่ ZDNet ชนะด้วยสิ่งต่อไปนี้ตั้งแต่ปี 2012 : “ บิ๊กดาต้า” เป็นวลีที่จับตามองจากช่องทางการคำนวณประสิทธิภาพสูงของตลาดไอที ... หากมีใครเข้าร่วมการนำเสนอจากซัพพลายเออร์เทคโนโลยีสิบรายคำนิยามที่แตกต่างกันสิบห้าข้อนั้นน่าจะเกิดขึ้น แน่นอนแต่ละคำนิยามมีแนวโน้มที่จะสนับสนุนความต้องการผลิตภัณฑ์และบริการของซัพพลายเออร์นั้น ๆ ลองจินตนาการว่า โดยทั่วไป "ข้อมูลขนาดใหญ่" คือ "ใหญ่" ในรูปแบบหรือรูปแบบ "ใหญ่" คืออะไร? มันเป็นเชิงปริมาณในเวลาปัจจุบันหรือไม่? …

3
ภาษาโปรแกรมที่ใช้งานได้จริงจัดการกับข้อมูลที่เปลี่ยนแปลงอย่างรวดเร็วอย่างไร
โครงสร้างข้อมูลใดที่คุณสามารถใช้เพื่อให้คุณสามารถลบและแทนที่ O (1) หรือคุณจะหลีกเลี่ยงสถานการณ์เมื่อคุณต้องการโครงสร้างดังกล่าวได้อย่างไร

2
มีโครงสร้างข้อมูลสำหรับรายการ / แผนที่ประเภทนี้หรือไม่?
อาจมีชื่อสำหรับสิ่งที่ฉันต้องการ แต่ฉันไม่ได้ตระหนักถึงมัน ฉันต้องการบางสิ่งที่คล้ายกับLinkedHashMapใน Java แต่มันจะส่งกลับค่า 'ก่อนหน้า' หากไม่มีค่าที่คีย์ที่ระบุ นั่นคือฉันมีรายการของวัตถุที่จัดเก็บโดยคีย์จำนวนเต็ม (ซึ่งอยู่ในหน่วยของเวลาในกรณีของฉัน): ; key->value 10->A 15->B 20->C ดังนั้นถ้าผมจะแบบสอบถามสำหรับค่าสำหรับคีย์ 0-9 nullก็จะกลับมา ส่วนพิเศษคือถ้าฉันถามหาสิ่งที่ 10 <= i <= 14 มันจะกลับมา A หรือสำหรับฉัน> = 20 ก็จะกลับ C มีโครงสร้างข้อมูลสำหรับสิ่งนี้หรือไม่?

2
โดยทั่วไปแล้วฉันจะใช้ Deque ในซอฟต์แวร์การผลิตที่ไหน
ฉันค่อนข้างคุ้นเคยกับการใช้สแต็คคิวและต้นไม้ในแอปพลิเคชันซอฟต์แวร์ แต่ฉันไม่เคยใช้ Deque (Double Ended Queue) มาก่อน โดยทั่วไปแล้วฉันจะพบพวกเขาที่ไหนในป่า? มันจะอยู่ในสถานที่เดียวกันกับคิว แต่มี gribbilies พิเศษหรือไม่?

3
ฉันจะแสดงความสัมพันธ์ที่ลึกซึ้งในข้อมูลของฉันได้อย่างไร
"A" เกี่ยวข้องกับ "B" และ "C" ฉันจะแสดงให้เห็นว่า "B" และ "C" อาจเกี่ยวข้องกับบริบทนี้ได้อย่างไร ตัวอย่าง: นี่คือหัวข้อข่าวบางส่วนเกี่ยวกับละครบรอดเวย์ล่าสุด: Glengarry Glen Ross ของ David Mamet นำแสดงโดย Al Pacino เปิดบรอดเวย์ Al Pacino ใน 'Glengarry Glen Ross': นักวิจารณ์คิดอย่างไร Al Pacino ได้รับบทวิจารณ์ที่ไม่สดใสสำหรับบทละครบรอดเวย์ รีวิวโรงละคร: Glengarry Glen Ross กำลังขายดาวของมันอย่างหนัก Glengarry Glen Ross; เฮ้ใครฆ่าไฟ Klieg? ปัญหา: การเรียกใช้ฟัซซี่ - สตริงที่ตรงกันกับระเบียนเหล่านี้จะสร้างความสัมพันธ์บางอย่าง แต่ไม่ใช่อื่น ๆ แม้ว่าผู้อ่านของมนุษย์สามารถเลือกพวกเขาออกจากบริบทในชุดข้อมูลที่มีขนาดใหญ่กว่ามาก ฉันจะค้นหาความสัมพันธ์ที่แนะนำ …

1
ต้นไม้ตัดสินใจกับเครือข่ายประสาท
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันกำลังใช้โครงสร้างการเรียนรู้ของเครื่องเพื่อพยายามทำนายการหลอกลวงในระบบการเงินเช่นธนาคาร ฯลฯ ... ซึ่งหมายความว่ามีข้อมูลที่แตกต่างกันมากมายที่สามารถใช้ในการฝึกอบรมโมเดลได้เช่น หมายเลขบัตรชื่อผู้ถือบัตรจำนวนประเทศ ฯลฯ ... ฉันมีปัญหาในการตัดสินใจว่าโครงสร้างใดดีที่สุดสำหรับปัญหานี้ ฉันมีประสบการณ์กับต้นไม้ตัดสินใจ แต่ในปัจจุบันฉันเริ่มตั้งคำถามว่าเครือข่ายประสาทจะดีขึ้นสำหรับปัญหาแบบนี้หรือไม่ นอกจากนี้หากวิธีอื่นใดจะดีที่สุดโปรดสอนฉัน ข้อดีข้อเสียของแต่ละโครงสร้างและโครงสร้างใดจะดีที่สุดสำหรับปัญหานี้ นอกจากนี้ฉันไม่แน่ใจเกี่ยวกับความจริงข้อนี้ แต่ฉันคิดว่าต้นไม้การตัดสินใจมีข้อได้เปรียบเหนือกว่าเครือข่ายประสาทในแง่ของความเร็วในการประมวลผล สิ่งนี้สำคัญเนื่องจากความเร็วเป็นปัจจัยสำคัญในโครงการนี้เช่นกัน

2
ต้นไม้ Aguri คืออะไร
จะผ่านรายการข่าวแฮ็กเกอร์เก่าบางอย่างฉันเจอโพสต์จากผู้ใช้ที่กล่าวว่า ต้นไม้ Aguri ซึ่งแต่งงานกับ Radix Trie ขนาดเท่าขอบ (เช่นที่คุณใช้ในตารางการจัดเส้นทางซอฟต์แวร์) ไปยังรายการ LRU และสังเคราะห์มวลรวมอัตโนมัติ (เช่น 10.0.0.0/16 จาก 1,000 การสังเกตในทุก IP) จากรูปแบบ ของการแทรก พวกเขาเป็นที่รู้จักกันดีในการวิเคราะห์ทราฟฟิก แต่เราก็ใช้มันในการวิเคราะห์หน่วยความจำรันไทม์เช่นกัน ~ tptacek ดังนั้นฉันจึงตัดสินใจค้นหามัน การค้นหาโดย Google อย่างรวดเร็วทำให้ฉันไปที่ไดรเวอร์ F1 การค้นหาวิกิพีเดียนำไปสู่วรรณะทางการเกษตรในอินเดียและบางรายการจากญี่ปุ่น Stack Overflow พบผล 0 รายการ/programming//search?q=aguri site:stackoverflow.com/questions aguri ในที่สุดฉันก็เชื่อมโยงมันกลับไปยังผู้ใช้แล้วเห็นว่าเขามีลิงค์ในบล็อกของเขา http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never-heard-of/ แต่มันตายไปแล้ว ดังนั้นโครงสร้างข้อมูล Aguri นี้คืออะไรและถ้าเป็นโครงสร้างข้อมูลจริงเหตุใดจึงไม่มีการบันทึกไว้ที่อื่น

6
เราได้รับอานม้าด้วยระบบแฟ้ม (ลำดับชั้น) เป็นโครงสร้างข้อมูลพื้นฐานได้อย่างไร
ฉันเรียนด้วยตัวเองและฉันไม่มีวุฒิปริญญาตรี ยิ่งฉันได้เรียนรู้เกี่ยวกับโครงสร้างข้อมูลมากเท่าไหร่ฉันก็ยิ่งสงสัยว่าในยุคนี้เราจะยังคงผูกมัดกับระบบไฟล์ด้วยไดเรคทอรีและไฟล์เป็นโครงสร้างการจัดเก็บข้อมูลพื้นฐานบนระบบปฏิบัติการได้อย่างไร ฉันเข้าใจความเรียบง่ายของมัน แต่ดูเหมือนทุกวันนี้อาจมีตัวเลือกเพิ่มเติมให้ใช้ เท่าที่ฉันทราบโครงการเดียวที่จะปรับปรุงการทำงานพื้นฐานของระบบไฟล์คือ ReiserFS ซึ่งคุณสามารถบอกได้ว่าบรรทัดใดของไฟล์ที่ถูกเปลี่ยนแปลงโดยใครและเมื่อใด ตัวอย่างเช่นถ้าฉันสามารถมีการติดแท็กเนทีฟสำหรับไฟล์ซึ่งฉันสามารถแท็กรูปภาพไดอะแกรมเอกสารประมวลผลคำพื้นที่เก็บข้อมูลรหัสทั้งหมดทั้งหมดเป็นของโครงการเดียวซึ่งจะเป็นประโยชน์กับฉันจริงๆ เนื่องจากฉันติดอยู่ในกระบวนทัศน์ของระบบแฟ้มฉันรู้ว่าฉันสามารถใส่สิ่งเหล่านั้นลงในโฟลเดอร์ / ไดเรกทอรีเดียว แต่ถ้าพวกมันมีอยู่แล้วในไดเรกทอรีที่แตกต่างกันและพวกเขาจำเป็นต้องอยู่ที่นั่น? ฉันรู้ว่ามีโปรแกรมออกมีที่สามารถทำได้ แต่ทำไมพวกเขาไม่ได้อยู่ในระบบไฟล์? สิ่งที่น่ายินดีที่มีก็คือคุณลักษณะเชิงสัมพันธ์บางอย่างในระบบไฟล์เช่นคุณได้รับจาก RDBMS ฉันเข้าใจว่าควรจะเป็นส่วนหนึ่งของ Vista / 7 แต่นั่นก็ลดลงจากรายการคุณสมบัติเช่นกัน แน่นอนว่าโปรแกรมใด ๆ สามารถจัดเก็บไฟล์ไบนารีและมีโครงสร้างข้อมูลใด ๆ ที่มันต้องการเพราะเหตุใดระบบปฏิบัติการจึงไม่สามารถเสนอวิธีการที่ซับซ้อนกว่าในการจัดเก็บข้อมูลนอกเหนือจากการสืบทอดแบบง่าย ๆ ของระบบไฟล์?

3
เมื่อโปรแกรมเมอร์พูดถึง "โครงสร้างข้อมูล" พวกเขาจะอ้างถึงอะไร
เมื่อโปรแกรมเมอร์พูดคุยเกี่ยวกับ "โครงสร้างข้อมูล" ที่พวกเขาเพียงพูดคุยเกี่ยวกับชนิดข้อมูลนามธรรมเช่นรายการ , ต้นไม้ , แฮช , กราฟฯลฯ ? หรือคำนั้นรวมถึงโครงสร้างใด ๆ ที่เก็บข้อมูลเช่นประเภทคอมโพสิต (วัตถุคลาส, structs, enums ฯลฯ ) และประเภทดั้งเดิม (บูลีน, int, ถ่าน ฯลฯ )? ฉันเคยได้ยินโปรแกรมเมอร์ใช้คำว่าอ้างอิงโครงสร้างข้อมูลที่ซับซ้อนหรือชนิดข้อมูลนามธรรมอย่างไรก็ตามบทความ Wikipedia ที่ให้รายการโครงสร้างข้อมูลประกอบด้วยทั้งชนิดคอมโพสิตและชนิดดั้งเดิมในนิยามซึ่งไม่ใช่สิ่งที่ฉันคาดหวัง แม้ว่ามันจะสมเหตุสมผล) เมื่อดูทางออนไลน์ฉันเห็นสถานที่อื่น ๆ ที่อ้างถึงคำว่า "โครงสร้างข้อมูล" ในแง่การเขียนโปรแกรมเป็นเพียงการอ้างถึงประเภทข้อมูลนามธรรมเช่นการบรรยายนี้จาก Stony Brook ของภาควิชาวิทยาการคอมพิวเตอร์ซึ่งระบุ โครงสร้างข้อมูลเป็นการใช้งานจริงของชนิดข้อมูลนามธรรมเฉพาะ หรือwikibook นี้กับโครงสร้างข้อมูลซึ่งใช้คำในประโยคเช่นนี้ เนื่องจากโครงสร้างข้อมูลเป็น abstractions ระดับที่สูงกว่าจึงมีการดำเนินการกับกลุ่มข้อมูลเช่นการเพิ่มรายการลงในรายการหรือค้นหารายการที่มีลำดับความสำคัญสูงสุดในคิว เหตุใดฉันจึงเคยได้ยินโปรแกรมเมอร์อ้างถึงโครงสร้างข้อมูลที่ซับซ้อนหรือชนิดข้อมูลนามธรรมเมื่อพวกเขาใช้คำว่า "โครงสร้างข้อมูล" โปรแกรมเมอร์มีคำจำกัดความที่แตกต่างจากคำศัพท์มากกว่าพจนานุกรม

5
การใช้งานจริงของ DelayQueue [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว อะไรจะเป็นการใช้งานจริงของDelayQueueปัญหาทั่วไปที่ได้รับการออกแบบมาเพื่อแก้ไขคืออะไร

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

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