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

คุณสมบัติและการใช้งานของโครงสร้างข้อมูลเช่นขอบเขตพื้นที่ต่ำหรือความซับซ้อนของเวลาในการแทรกและลบวัตถุ

1
การใช้งานพาร์ทิชันทรี?
เคยมีการนำต้นไม้พาร์ติชันมาใช้หรือไม่? ที่นี่ฉันกำลังพูดถึงต้นไม้พาร์ติชันจากเรขาคณิตการคำนวณ รุ่นที่เหมาะสมที่สุด (ใกล้ -) ซึ่งเป็นรุ่น Matousek และรุ่นอื่น ๆ และ Timothy Chan ล่าสุด: https://cs.uwaterloo.ca/~tmchan/optpt_2_10.pdf มันฟังดูบ้าสำหรับฉันที่สิ่งเหล่านี้ไม่เคยถูกนำมาใช้ แต่ googling กลับไม่มีการใช้งานที่ใครก็ตามที่เคยรายงาน

4
จำนวนการแก้ไขสั้นที่สุดย้ายระหว่างสองคำ
ฉันกำลังมองหาโครงสร้างข้อมูลและอัลกอริทึมในการคำนวณจำนวนการเปลี่ยนแปลงขั้นต่ำที่จำเป็นในการแปลงคำหนึ่งเป็นอีกคำหนึ่งโดยให้ทั้งสองคำเป็นอินพุตซึ่งการเปลี่ยนแปลงที่อนุญาตเท่านั้นคือ เพิ่มตัวอักษรที่หนึ่งในขา (เช่น AB -> ABC) ทำซ้ำและต่อคำทั้งหมด (ตัวอย่างเช่น ABC -> ABCABC) ตัดคำในสอง (คู่ของการย้ายซ้ำ, ABCABC -> ABC + ABC) ลบตัวอักษรตัวใดตัวหนึ่ง (เช่น ABC -> AC) และ ทำซ้ำตัวอักษรตัวใดตัวหนึ่ง (เช่น ABC -> ABBC) ตัวอย่างเช่นลำดับขั้นต่ำของการย้ายจาก ABC ไปยัง BCBC คือ ABC -> BC (ลบ A) -> BCBC (การทำซ้ำ) ฉันไม่มีพื้นฐานด้านวิทยาการคอมพิวเตอร์ บางทีนี่อาจเป็นปัญหาที่รู้จักกันดี แต่การค้นหาโดย Google ของฉันไม่ได้ให้อะไรเลย คุณรู้หรือไม่ว่าปัญหาที่เกี่ยวข้องและกำหนดชัดเจน? แก้ไข : …

3
ค้นหาระยะทางสั้นที่สุดของคะแนนใน Pairwise เป็น o (n log n) หรือไม่
แบบฝึกหัดต่อไปนี้มอบให้กับนักเรียนที่ฉันควบคุมดูแล: กำหนดจุดบนเครื่องบินประดิษฐ์อัลกอริธึมที่หาคู่ของจุดที่ระยะทางน้อยที่สุดในทุกจุด อัลกอริทึมควรใช้ในเวลาที่o ( n 2 )nnno(n2)o(n2)o(n^2) มี (ค่อนข้าง) แบ่งและพิชิตอัลกอริทึมง่ายๆที่แก้งานในเวลาที่เป็น )Θ(nlogn)Θ(nlog⁡n)\Theta(n \log n) คำถามที่ 1 : มีอัลกอริทึมที่แก้ปัญหาที่เกิดขึ้นในเวลาที่เลวร้ายที่สุดหรือไม่?o(nlogn)o(nlog⁡n)\mathcal{o}(n \log n) สิ่งที่ทำให้ฉันสงสัยว่าสิ่งนี้อาจเป็นไปได้คือผลลัพธ์ที่ฉันจำได้ว่าได้เห็นในการพูดคุย (อ้างอิงชื่นชม) มันระบุสิ่งที่ตามเส้นที่ไม่เกินค่าคงที่จำนวนจุดสามารถจัดอยู่ในระนาบที่อยู่รอบ ๆ บางจุดPอยู่ภายในวงกลมรัศมีR ∈ RกับRระยะทางที่น้อยที่สุดระหว่างสองจุดที่เกี่ยวข้อง . ฉันคิดว่าc = 7จุดที่สร้างรูปหกเหลี่ยมด้านเท่ากันหมดที่มีpอยู่ตรงกลาง (ในกรณีที่รุนแรง)c∈Nc∈Nc \in \mathbb{N}pppr∈Rr∈Rr \in \mathbb{R}rrrc=7c=7c=7ppp ในกรณีดังกล่าวอัลกอริทึมต่อไปนี้ควรแก้ไขปัญหาได้ในขั้นตอนnnn fun mindist [] | p::[] = INFINITY | mindist p1::p1::[] = dist(P[0], P[1]) | …

1
การประมวลผลล่วงหน้าที่เหมาะสมที่สุดสำหรับการสืบค้นบางประเภท
สมมติว่าเรามีกึ่งกลุ่มที่มีองค์ประกอบS = { s 1 , s 2 , ... , s n } เป้าหมายของเราคือการคำนวณผลิตภัณฑ์s ฉัน ∘ s ฉัน+ 1 ∘ ⋯ ∘ s J( S, ∘ )(S,∘)(S,\circ)S= { s1, s2, … , sn}S={s1,s2,...,sn}S=\lbrace s_1,s_2,\dots,s_n\rbracesผม∘ sฉัน+ 1∘ ⋯ ∘ sJsผม∘sผม+1∘⋯∘sJs_i\circ s_{i+1}\circ \cdots\circ s_j ในบทความของพวกเขา "การประมวลผลที่เหมาะสมที่สุดสำหรับการตอบแบบสอบถามออนไลน์" Alon และ Schieber พิสูจน์ว่าเราสามารถตอบแต่ละคำถามดังกล่าวได้ในขั้นตอน (โดยที่αเป็นฟังก์ชัน …

2
กำหนดโครงสร้างข้อมูลเพื่อการแทรกซ้ำอย่างมีประสิทธิภาพ
ฉันกำลังมองหาโครงสร้างข้อมูลที่ประหยัดพื้นที่ซึ่งมีชุด (ไม่มีการทำซ้ำ) ขององค์ประกอบคำและสนับสนุนการแทรกอย่างรวดเร็ว (O (1) ตัดจำหน่าย) โดย "พื้นที่ที่มีประสิทธิภาพ" ผมหมายถึงความนึกคิดn + o ( n )n+โอ(n)n + o(n)คำพูดในการจัดเก็บnnnองค์ประกอบ เป็นชุดจะเป็นส่วนสำคัญของคำถาม: ถ้าแต่ละองค์ประกอบจะถูกเพิ่มเข้าสู่ระบบnเข้าสู่ระบบ⁡n\log nครั้งพื้นที่ที่ใช้ไม่สามารถไม่มีบันทึกnnเข้าสู่ระบบ⁡nn\log n n โครงสร้างควรสนับสนุนการแสดงรายการองค์ประกอบ (สมเหตุสมผลอย่างมีประสิทธิภาพ); โครงสร้างที่มีเหตุผลควรมีปัญหาใด ๆ ที่นี่ (ข้อความค้นหาการเป็นสมาชิกที่รวดเร็วเป็นข้อดี)

2
โครงสร้างข้อมูลที่อนุญาตการค้นหาด้วยแท็กที่มีประสิทธิภาพ
ฉันกำลังมองหาโครงสร้างข้อมูลที่มีประสิทธิภาพสูงสำหรับการจัดเก็บข้อมูลคล้ายกับต่อไปนี้ แท็ก Id Order1 Order2 -------------------------- 1 1,2 1 1 2 2,5 2 3 3 1,7 4 7 4 6 3 0 ฉันต้องการที่จะสามารถที่จะสอบถามโครงสร้างนี้ในลักษณะดังกล่าวว่าจะให้ฉันรายการรหัสทั้งหมดที่มีการแสดงออกของแท็กต์ - สนับสนุนANDและORและNOTการดำเนินงาน เช่น. ((1 หรือ 2) และไม่ใช่ 7) ฉันยังต้องสามารถระบุการเรียงลำดับของผลลัพธ์ (Order1 หรือ Order2) และสามารถระบุแถวสูงสุดที่ส่งคืนพร้อมกับออฟเซ็ตเสริม ประสิทธิภาพสำหรับการดึงผลลัพธ์ 30-100 ครั้งแรกคือกุญแจสำคัญ ในที่สุดฉันต้องการวิธีที่ถูกในการค้นหา "ความสัมพันธ์ของแท็ก" ตัวอย่างเช่นฉันต้องการทราบว่าแท็กใดที่ "เกี่ยวข้อง" กับแท็ก (1 หรือ 2) และในความถี่ใด ความหมายแท็กใดที่ปรากฏในชุดเดียวกันกับ 1 …

1
รายการข้ามกำหนดที่มีความสมดุลน้ำหนักมาก
ในส่วน 2.2 ของแคชลบเลือน B-ต้นไม้ , ยิ่งน้ำหนักที่สมดุลต้นไม้ค้นหาจะถูกกำหนดเป็น: สำหรับค่าคงที่ทุกโหนดvที่ความสูงhมีการสืบทอดΘ ( d h )dddโวลต์vvชั่วโมงhhΘ ( dชั่วโมง)Θ(dh)\Theta(d^h) พวกเขาอ้างว่า: ค้นหาต้นไม้ที่ตอบสนองคุณสมบัติ 1 และ 2 รวมถึงต้นไม้ B น้ำหนักสมดุลรายการข้ามที่กำหนดและข้ามรายการในแง่ที่คาดหวัง เอกสารอื่นยังอ้างว่ารายการข้ามที่กำหนดได้นั้นมีความสมดุลของน้ำหนักอย่างมากรวมถึงB-Trees ที่ลบล้างได้พร้อมกันและB-trees ที่หายไป ฉันไม่สามารถหาสาเหตุที่รายการข้ามที่กำหนดได้มีคุณสมบัตินี้ กระดาษเดิมกำหนดเฮี๊ยบรายการบันทึกว่า ดังที่เราเห็นจากรูปที่ 1 มีการโต้ตอบแบบหนึ่งต่อหนึ่งระหว่าง 1-2 รายการข้ามและต้นไม้ 2-3 ต้น สำหรับฉันแล้วดูเหมือนว่าต้นไม้ 2-3 ต้นนั้นไม่ได้มีน้ำหนักที่สมดุลเนื่องจากโหนดที่ความสูงสามารถมีลูกหลานได้ตั้งแต่2 ชั่วโมงถึง3 ชั่วโมงชั่วโมงhh2ชั่วโมง2h2^h3ชั่วโมง3h3^h

2
มีอัลกอริธึมที่รวดเร็วสำหรับปัญหาส่วนโค้งความคิดเห็นต้นทุนต่ำสุดหรือไม่
ในกราฟกำกับ, , , ถ้าเป็น DAG (กราฟ acyclic กำกับ),เรียกว่าชุดความคิดเห็นย้อนกลับ G=(V,E)G=(V,E)G=(V,E)F⊂EF⊂EF\subset EG∖FG∖FG\setminus FFFF หากขอบแต่ละอันเชื่อมโยงกับน้ำหนักปัญหาชุดส่วนโค้งตอบกลับต้นทุนต่ำสุดคือการหาที่น้อยที่สุดwwwFFFW(F)W(F)W(F) เป็นที่ทราบกันดีว่าปัญหาส่วนโค้งตอบรับขั้นต่ำนั้นเป็นปัญหาที่เกิดขึ้นยากมาก ฉันสงสัยว่าใครรู้อัลกอริทึมโดยประมาณที่ทำงานได้ดีและคุณสมบัติใด ๆ ของฟังก์ชั่นน้ำหนักที่สามารถแก้ปัญหาได้อย่างรวดเร็ว

2
ขอบเขตการแลกเปลี่ยนสำหรับการนับช่วง Halfspace
อะไรคือขอบเขตที่ดีที่สุดในปัจจุบันสำหรับการดำเนินการค้นหาช่วงครึ่งสเปซบนชุดของจุด -dimensional ที่แสดงในรูปแบบของการแลกเปลี่ยนเวลา / พื้นที่ ตาม Matousek น้ำเชื้อ 1993 กระดาษ (ทฤษฎีบท 6.2 ขอบเขตการค้นหาที่มีประสิทธิภาพตามลำดับชั้นการปักชำ) เราสามารถทำนับช่วงสำหรับการค้นหาที่มีจุดตัดของพี halfspaces สำหรับ1 ≤ P ≤ d + 1โดยใช้โครงสร้างข้อมูลขนาดO ( m )สำหรับn ≤ m ≤ n dในO ( ndddพีpp1 ≤ p ≤ d+ 11≤p≤d+11 \le p \le d+1O ( m )O(m)O(m)n ≤ m ≤ ndn≤m≤ndn \le m …

1
พิมพ์ลายนิ้วมือสำหรับชุดแบบไดนามิก
มีโครงสร้างข้อมูล word-RAM ของ W-bit ที่มีเวลา O (1) ต่อการดำเนินการสำหรับปัญหาต่อไปนี้หรือไม่: รักษาชุดของจำนวนเต็มที่ไม่ใช่ลบ W-bit ที่รองรับการดำเนินการ เพิ่ม (x): เพิ่ม x ในชุด ลบ (x): ลบ x จากชุด ลายนิ้วมือ (): คืนลายนิ้วมือของชุด ลายนิ้วมือ w-bit นี้มีคุณสมบัติที่สองชุดที่เหมือนกันมีลายนิ้วมือเดียวกันในขณะที่สองชุดที่แตกต่างกันอาจมีลายนิ้วมือที่แตกต่างกัน การดำเนินการทั้งหมดควรทำงานในเวลาคงที่ แผนการพิมพ์ลายนิ้วมือ Rabin-Karp โดยที่โดยที่ p เป็นการสุ่ม w-bit prime เกือบจะใช้งานได้ ปัญหาเกิดขึ้นกับเวลาอัปเดตเนื่องจากการคำนวณ2 x mod pใช้เวลามากกว่าเวลาคงที่ การใช้กำลังสองซ้ำนี้สามารถทำได้ในเวลา O (log w) อัลกอริทึมการยกกำลังแบบแยกส่วนที่เร็วที่สุดที่ฉันสามารถหาได้คือการดำเนินการทางคณิตศาสตร์ (log w) / (loglog w)ฉ( …

6
โครงสร้างข้อมูลสำหรับชุดของต้นไม้
พยายามอนุญาตการจัดเก็บรายการองค์ประกอบอย่างมีประสิทธิภาพ คำนำหน้าจะใช้ร่วมกันดังนั้นจึงเป็นพื้นที่ที่มีประสิทธิภาพ ฉันกำลังมองหาวิธีที่คล้ายกันในการจัดเก็บต้นไม้อย่างมีประสิทธิภาพ ฉันต้องการที่จะตรวจสอบการเป็นสมาชิกและเพิ่มองค์ประกอบโดยรู้ว่าต้นไม้ที่กำหนดเป็นต้นไม้ย่อยของต้นไม้ที่เก็บไว้หรือถ้ามีต้นไม้ที่เก็บไว้เป็นต้นไม้ย่อยของต้นไม้ที่กำหนดก็เป็นที่ต้องการเช่นกัน ฉันมักจะเก็บต้นไม้ไบนารีที่มีความสูงไม่สมดุลประมาณ 500 ต้นน้อยกว่า 50 แก้ไข แอปพลิเคชันของฉันเป็นตัวตรวจสอบรุ่นบางประเภทโดยใช้การบันทึกความจำบางประเภท ลองนึกภาพผมมีรัฐและสูตรต่อไปนี้: F = φและกรัม= ( φ ∨ ψ )กับφเป็น subformula ซับซ้อนและจินตนาการแรกที่ผมต้องการทราบว่าฉถืออยู่ในs ฉันจะตรวจสอบว่าϕถือครองและหลังจากกระบวนการที่มีความยาวฉันได้รับมันเป็นกรณี ทีนี้ฉันอยากรู้ว่าgมีsหรือไม่ ฉันต้องการจดจำความจริงที่ว่าfเก็บไว้และสังเกตว่าg ⇒ fsssf=ϕf=ϕf = \phig=(ϕ∨ψ)g=(ϕ∨ψ)g = (\phi \vee \psi)ϕϕ\phifffsssϕϕ\phigggsssfffg⇒fg⇒fg \Rightarrow fเพื่อที่ฉันจะได้ค่าในsเกือบจะในทันที ในทางกลับกันถ้าฉันได้พิสูจน์แล้วว่าgไม่ถือในtฉันก็อยากจะบอกว่าfไม่ถือในtเกือบจะทันทีgggsssgggtttfffttt เราสามารถสร้างคำสั่งซื้อบางส่วนเกี่ยวกับสูตรและมี IFF กรัม⇒ฉ แต่ละรัฐsเราเก็บสองชุดของสูตร; L ( s ) จัดเก็บสูตรสูงสุดที่เก็บไว้และl ( s ) จะจัดเก็บสูตรขั้นต่ำที่ไม่ได้เก็บไว้ ตอนนี้ได้รับการรัฐsและสูตรกรัมผมสามารถดูได้ว่า∃ ฉ∈ …

4
ค่าใช้จ่ายในการดำเนินการประมาณ ค้นหาเพื่อนบ้านที่ใกล้ที่สุดในข้าม quadtree
หมายเหตุ : คำถามได้รับการปรับปรุงใหม่ในคำตอบของฉัน: สมมติว่าตอนนี้เราสามารถหาบรรพบุรุษที่ต่ำที่สุดในเวลาแล้ว ANN สามารถทำได้ในหรือไม่O ( 1 )O(1)O(1)O ( บันทึกn )O(log⁡n)O(\log n) Quadtrees เป็นดัชนีเชิงพื้นที่ที่มีประสิทธิภาพ ฉันมีปริศนาที่มีการใช้การค้นหาเพื่อนบ้านที่ใกล้ที่สุดในโครงสร้างควอดทรีบีบอัดตามที่อธิบายไว้ใน [2] (โดยไม่ต้องลงรายละเอียดการค้นหาจะเลื่อนจากบนลงไปตามสี่เหลี่ยมจัตุรัสที่มีระยะเท่ากันซึ่งสิ้นสุดในโหนดหางของเส้นทางที่มีระยะเท่ากันในรูปภาพที่แนบนี้อาจเป็นโหนดใด ๆ ในภาคตะวันออกเฉียงใต้ที่เต็มไปด้วยจุด) สำหรับอัลกอริทึมในการทำงานเราจะต้องรักษาแต่ละโหนด - สี่เหลี่ยมจัตุรัสที่มี quadrants ไม่ว่างอย่างน้อยสองตัว - พอยน์เตอร์สำหรับแต่ละโหนดที่ต่ำที่สุด (ใกล้เคียงที่สุดในลำดับชั้น) โหนดบรรพบุรุษในแต่ละสี่ทิศทาง (ทิศเหนือทิศตะวันตกทิศใต้ ตะวันออก) ลูกศรสีเขียวเหล่านี้ถูกระบุด้วยลูกศรสีเขียวสำหรับโหนดบรรพบุรุษทางทิศตะวันตกของโหนด (ลูกศรชี้ไปที่ศูนย์กลางของจัตุรัสบรรพบุรุษ) กระดาษที่อ้างว่าตัวชี้เหล่านี้สามารถอัปเดตใน O (1) ระหว่างการแทรกจุดและการลบ อย่างไรก็ตามเมื่อดูที่การแทรกจุดสีเขียวดูเหมือนว่าฉันจำเป็นต้องอัปเดตพอยน์เตอร์จำนวนเท่าใดก็ได้ในกรณีนี้พวกเขาหกคน ฉันหวังว่าจะมีเคล็ดลับในการอัปเดตตัวชี้นี้ในเวลาที่แน่นอน อาจมีรูปแบบของการอ้อมที่สามารถใช้ประโยชน์ได้หรือไม่? แก้ไข: ส่วนที่เกี่ยวข้องจากกระดาษคือ 6.3 ที่อ่าน: "ถ้าเส้นทางมีโค้งแล้วนอกจากบรรพบุรุษที่ต่ำที่สุดของเราควรพิจารณาแต่ละทิศทางต่ำสุด บรรพบุรุษของที่ไปสู่ทิศทางนั้น [... ] การหาสี่เหลี่ยมเหล่านี้จากสามารถทำได้ในเวลาต่อหนึ่งตารางถ้าเราเชื่อมโยงพอยน์เตอร์เพิ่มเติมกับแต่ละตารางในชี้ไปที่บรรพบุรุษที่ใกล้ที่สุดสำหรับแต่ละทิศทาง ตัวชี้เหล่านี้ยังสามารถปรับปรุงได้ในเวลาในระหว่างการแทรกหรือการลบจุด …

2
จำกัด เฉพาะคอลเล็กชันที่ปลอดล็อคหรือไม่
David Rodríguez - dribeas เขียนไว้ในความคิดเห็นเกี่ยวกับ StackOverflowว่า "คอลเลกชันบางอย่างอาจไม่สามารถใช้งานได้โดยไม่ล็อค" ฉันไม่แน่ใจว่านี่เป็นเรื่องจริงหรือไม่และฉันไม่สามารถหาข้อพิสูจน์ได้ คำสั่งนี้ไม่แม่นยำมาก แต่ให้ฉันลองใช้คำใหม่อย่างเป็นทางการเล็กน้อย: สำหรับคอลเลกชันทุกประเภทCมีคอลเลกชันประเภทล็อคฟรีCLFที่มีชุดปฏิบัติการเดียวกันและที่แต่ละการดำเนินการบนCLFมีความซับซ้อนขนาดใหญ่-O Cเช่นเดียวกับการดำเนินงานที่สอดคล้องกันใน ฉันไม่คิดว่าจะมีการเปลี่ยนแปลงอีกต่อไป

2
ฉันจะเลือกโครงสร้างข้อมูลพจนานุกรมที่ทำงานได้อย่างไร
ฉันได้อ่านเกี่ยวกับโครงสร้างข้อมูลต่อไปนี้: Ideal Hash พยายามของแบกเวล ตารางแฮชแบบไดนามิกของ Larson ต้นไม้สีแดง - ดำ ต้นไม้แพทริเซีย ... และฉันแน่ใจว่ามีเป็นจำนวนมากของคนอื่น ๆ ออกมี ฉันได้เห็นน้อยมากในแบบของสิ่งที่แต่ละคนเหมาะสมกว่าหรือทำไมฉันถึงเลือกอีกแบบหนึ่ง ดังนั้นนี่คือคำถามสองสามข้อตามบรรทัดเหล่านี้: โครงสร้างข้อมูลพจนานุกรมที่ใช้งานได้มีความสำคัญอะไรที่ต้องรู้ อะไรคือข้อดีข้อเสียของวิธีการเหล่านี้? เมื่อใดที่จะใช้โครงสร้างข้อมูลที่จำเป็นมากขึ้น หมายเลข 2 และ 3 เป็นสิ่งที่สำคัญกว่า :-)

2
การเข้ารหัสด่วนของเวกเตอร์ที่สมดุล
มันเป็นเรื่องง่ายที่จะเห็นว่าสำหรับการใด ๆมีอยู่ 1-1 ทำแผนที่จาก {0,1}เป็น {0,1}ดังกล่าวว่าสำหรับการใด ๆเวกเตอร์คือ "สมดุล" คือมีจำนวนเท่ากับ 1 และ 0 เป็นไปได้ไหมที่จะกำหนดเช่นนี้เพื่อให้เราสามารถคำนวณ อย่างมีประสิทธิภาพ?nnnnFFFnn^nn+O(logn)n+O(log⁡n)^{n+O(\log n)}xxxF(x)F(x)F(x)FFFxxxF(x)F(x)F(x) ขอบคุณ

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