คำถามติดแท็ก online-algorithms

1
ภาษาที่รู้จักโดย DFA ขนาดพหุนาม
สำหรับตัวอักษรที่แน่นอนคงเป็นภาษาอย่างเป็นทางการLมากกว่าΣคือปกติถ้ามีอยู่กำหนดขอบเขตหุ่นยนต์ (DFA) มากกว่าΣซึ่งยอมรับว่าLΣΣ\SigmaLLLΣΣ\SigmaΣΣ\SigmaLLL ฉันสนใจในภาษาที่ "เกือบจะ" เป็นปกติในแง่ที่ว่าพวกเขาสามารถได้รับการยอมรับจากครอบครัวออโตมาตะที่มีขนาดที่โตขึ้นเฉพาะกับคำพหุนาม อย่างเป็นทางการให้ฉันบอกว่าเป็นภาษาที่เป็นทางการจะได้รับการยอมรับโดย DFA ครอบครัว( n )ถ้าทุกคำพูดW ∈ Σ *ให้n = | w | , Wอยู่ในL IFF nยอมรับW (ไม่ว่าถ้าคนอื่น ๆฉันยอมรับมันหรือไม่) และแจ้งให้เรากำหนดP-ปกติภาษาเป็นภาษารับการยอมรับจากPTIME-คำนวณครอบครัว DFA ( n )LLL (An)(An)(A_n)w∈Σ∗w∈Σ∗w \in \Sigma^*n=|w|n=|w|n = |w|wwwLLLAnAnA_nwwwAiAiA_i(An)(An)(A_n)ขนาดพหุนามคือมีความเป็นพหุนามดังกล่าวว่า| n | ≤ P ( n )สำหรับทุกn (ชื่อนี้คือ "p-regular" เป็นสิ่งที่ฉันสร้างขึ้นคำถามของฉันคือการรู้ว่ามีชื่ออื่นอยู่แล้วสำหรับเรื่องนี้โปรดทราบว่านี่ไม่ใช่ภาษา p-regular ในแง่ของการเปลี่ยนแปลงแบบอัตโนมัติ )PPP|An|≤P(n)|An|≤P(n)|A_n| \leq P(n)nnn ภาษา …

2
การรักษาต้นไม้ที่ทอดข้ามที่สมดุลของกราฟที่ไม่มีทิศทางเพิ่มขึ้น
ฉันกำลังมองหาวิธีที่จะรักษาต้นไม้ที่ทอดข้ามค่อนข้างสมดุลของกราฟในขณะที่ฉันเพิ่มโหนด / ขอบใหม่ให้กับกราฟ ฉันมีกราฟที่ไม่มีทิศทางซึ่งเริ่มต้นเป็นโหนดเดียวคือ "รูท" ในแต่ละขั้นตอนฉันเพิ่มกราฟทั้งโหนดใหม่และขอบเชื่อมต่อกับกราฟหรือเพียงแค่ขอบใหม่เชื่อมต่อสองโหนดเก่า ในขณะที่ฉันเติบโตกราฟฉันคงต้นไม้ที่ทอดไว้ ส่วนใหญ่แล้วนี่หมายความว่าเมื่อฉันเพิ่มโหนดและขอบใหม่ฉันตั้งค่าโหนดใหม่ให้เป็นลูกของโหนดเก่าที่มันเชื่อมต่อกับ ฉันไม่สามารถควบคุมลำดับที่มีการเพิ่มโหนดใหม่ดังนั้นอัลกอริทึมการสร้างต้นไม้ด้านบนสามารถนำไปสู่ต้นไม้ที่ทอดได้อย่างสมดุล ไม่มีใครรู้เกี่ยวกับการวิเคราะห์พฤติกรรมออนไลน์ที่จะทำให้ต้นไม้ที่ทอด "ค่อนข้างสมดุล" ในขณะที่ลดจำนวนงานที่ทำในการทำทรีใหม่หรือไม่ ฉันสามารถควบคุมโครงสร้างต้นไม้ได้อย่างสมบูรณ์ สิ่งที่ฉันไม่ควบคุมคือการเชื่อมต่อกราฟหรือลำดับที่เพิ่มโหนดใหม่ โปรดทราบว่าคำตอบมาตรฐานของ Google สำหรับคำเช่น "สมดุล" "การขยาย" และ "ต้นไม้" ดูเหมือนจะเป็นต้นไม้ไบนารีและต้นไม้ B ซึ่งไม่มีผลบังคับใช้ โหนดกราฟของฉันสามารถมีจำนวนเพื่อนบ้านได้ดังนั้นโหนดต้นไม้สามารถมีจำนวนเด็ก ๆ ได้ไม่ใช่ 2 เหมือนต้นไม้ไบนารี B-trees รักษาสมดุลโดยการเปลี่ยนรายการ adjacency ของพวกเขาและฉันไม่สามารถเปลี่ยนการเชื่อมต่อกราฟ

2
อัลกอริทึมสำหรับ 'k' 'ตัวเลขที่เกิดขึ้นบ่อยที่สุด
ฉันค้นหาอัลกอริธึมที่มีประสิทธิภาพมากที่สุด (การสตรีมมิ่ง ??) ที่บอกองค์ประกอบที่เกิดขึ้นบ่อยที่สุด 'k' ในสตรีมข้อมูล ณ จุดใดก็ได้ โพสต์นี้: อัลกอริทึมสตรีมข้อมูล "หารและพิชิต"ทำให้ฉันสนใจ ตัวอย่างเช่นสมมติว่ามีตัวเลข: (4,3,5,1,6,2,4,3,8,9,1) และฉันค้นหาหมายเลข 3 ที่เกิดขึ้นบ่อยที่สุด (พูด) แล้วฉันควร รับ (3,4,1) เป็นคำตอบ ฉันพยายามค้นหาออนไลน์ แต่ไม่สามารถหาสถานที่ที่ให้แนวทางและบอกว่าดีที่สุด วิธีแก้ปัญหาเล็ก ๆ น้อย ๆ ก็คือการใช้กองหรือต้นไม้ไบนารีแบบสมดุล แต่ฉันคิดว่ามันมีวิธีที่ดีกว่าและฉันอยากรู้ว่ามันมีการบันทึกไว้ที่ใดที่หนึ่งหรือไม่ แก้ไข: ฉันกำลังมองหาอัลกอริทึมที่ให้คำตอบที่ถูกต้องเสมอเมื่อเทียบกับอัลกอริธึม appromixation (ซึ่งหลายอันปรากฏขึ้นในผลการค้นหา) ซึ่งขึ้นอยู่กับการกระจายของข้อมูลไม่ทางใดก็ทางหนึ่ง

2
มีอัลกอริทึมที่มีประสิทธิภาพในการรักษาข้อมูลการเชื่อมต่อสำหรับ DAG ต่อหน้า / ลบหรือไม่?
ด้วยกราฟ acyclic โดยตรงเป็นไปได้หรือไม่ที่จะสนับสนุนการดำเนินการต่อไปนี้ได้อย่างมีประสิทธิภาพ?G(V,E)G(V,E)G(V,E) : กำหนดถ้ามีเส้นทางใน GจากโหนดไปยังโหนดขisConnected(G,a,b)isConnected(G,a,b)isConnected(G,a,b)GGGaaabbb : เพิ่มขอบจาก aถึง bในกราฟ Glink(G,a,b)link(G,a,b)link(G,a,b)aaabbbGGG : ลบขอบจาก aถึง bใน Gunlink(G,a,b)unlink(G,a,b)unlink(G,a,b)aaabbbGGG : เพิ่มจุดสุดยอดไปที่ Gadd(G,a)add(G,a)add(G,a) : ลบจุดสุดยอดออกจาก Gremove(G,a)remove(G,a)remove(G,a) หมายเหตุเล็กน้อย: ถ้าเราไม่ได้รับอนุญาตดูเหมือนว่ามันจะเป็นเรื่องง่ายที่จะรักษาข้อมูลการเชื่อมโยงโดยใช้เคล็ดชุดชนิดโครงสร้างข้อมูลunlinkunlinkunlink เห็นได้ชัดว่าอาจจะดำเนินการโดยใช้ความลึกหรือกว้างแรกค้นหาโดยใช้แทนตัวชี้ตามที่ไร้เดียงสาของกราฟ แต่นี่ไม่มีประสิทธิภาพisConnectedisConnectedisConnected ฉันหวังว่าจะตัดจำหน่ายค่าคงที่หรือเวลาลอการิทึมสำหรับการดำเนินการทั้งสามนี้ เป็นไปได้ไหม

3
มีอัลกอริทึมการประมาณค่าคงที่สำหรับปัญหาการระบายสีสี่เหลี่ยม 2 มิติหรือไม่?
ปัญหาที่เราพิจารณาที่นี่คือส่วนขยายของปัญหาการระบายสีช่วงเวลาที่รู้จักกันดี แทนที่จะเป็นช่วงเวลาเราพิจารณาสี่เหลี่ยมที่มีด้านขนานกับแกน มีวัตถุประสงค์เพื่อระบายสีสี่เหลี่ยมโดยใช้จำนวนสีขั้นต่ำเช่นที่สี่เหลี่ยมสองอันใด ๆ ที่ทับซ้อนกันจะได้รับการกำหนดสีที่แตกต่างกัน ปัญหานี้เป็นที่รู้กันว่า NP-hard Xin Han, Kazuo Iwama, Rolf Klein และ Andrezej Lingas (ประมาณชุดสูงสุดอิสระและการระบายสีจุดสุดยอดขั้นต่ำบนกราฟกล่อง) ให้การประมาณ O (log n) มีอัลกอริทึมการประมาณที่ดีกว่าหรือไม่? เรารู้ว่าปัญหาการระบายสีช่วงเวลาได้รับการแก้ไขในเวลาพหุนามโดยอัลกอริทึมแบบพอดีโดยพิจารณาช่วงเวลาตามจุดสิ้นสุดด้านซ้าย อย่างไรก็ตามอัลกอริทึมแบบออนไลน์ที่เหมาะสมที่สุดคือ 8 การแข่งขันเมื่อช่วงเวลาปรากฏตามลำดับที่กำหนด ประสิทธิภาพของอัลกอริทึมแบบพอดีสำหรับปัญหาการระบายสีสี่เหลี่ยมคืออะไร จะเกิดอะไรขึ้นกับอัลกอริทึมแบบพอดีเมื่อสี่เหลี่ยมปรากฏตามด้านซ้าย (แนวตั้ง) ขอบคุณล่วงหน้าสำหรับความช่วยเหลือในเรื่องนี้

1
มันเพียงพอหรือไม่ที่ข้อ จำกัด เชิงเส้นของโปรแกรมจะทำให้พอใจในความคาดหมาย?
ในการวิเคราะห์การสุ่มอันดับสองแบบสุ่มของการจัดอันดับสำหรับการจับคู่สองฝ่ายออนไลน์ในขณะที่พิสูจน์ว่าอัลกอริทึมการจัดอันดับคือ- การแข่งขันผู้เขียนแสดงให้เห็นว่าทั้งคู่มีความเป็นไปได้ในความคาดหมาย (ดูเลมม่า 3 ในหน้า 5) คำถามของฉันคือ:(1−1e)(1−1e)\left(1 - \frac{1}{e}\right) มันเพียงพอหรือไม่ที่ข้อ จำกัด เชิงเส้นของโปรแกรมจะทำให้พอใจในความคาดหมาย? มันเป็นสิ่งหนึ่งที่แสดงให้เห็นว่ามูลค่าที่คาดหวังของฟังก์ชันวัตถุประสงค์คืออะไร แต่ถ้าข้อ จำกัด ของความเป็นไปได้มีความพึงพอใจในการคาดหวังไม่มีการรับประกันว่าจะเป็นที่พอใจในการวิ่ง นอกจากนี้ยังมีข้อ จำกัด ดังกล่าวจำนวนมาก ดังนั้นสิ่งที่รับประกันว่าพวกเขาทั้งหมดจะพอใจในการทำงานที่กำหนด?

2
หนังสืออัลกอริทึมออนไลน์
มีหนังสือเกี่ยวกับอัลกอริทึมออนไลน์บ้างไหม ฉันรู้เพียงแค่หนังสือสองเล่มในเรื่องนี้ การคำนวณออนไลน์และการวิเคราะห์การแข่งขันโดย Allan Borodin และ Ran El-Yaniv: นี่คือหนังสือคลาสสิก แต่เก่าและไม่มีความก้าวหน้าล่าสุดมากมายในสาขานี้ การออกแบบอัลกอริทึมการแข่งขันออนไลน์ผ่านวิธี Primal-Dualโดย Niv Buchbinder และ Joseph (Seffi) Naor: นี่คือหนังสือเล่มใหม่และมีผลลัพธ์ล่าสุดมากมาย อย่างไรก็ตามขอบเขตของมัน จำกัด เฉพาะอัลกอริธึมแบบสองเท่าที่ใช้ LP กรุณาระบุรายชื่อหนังสือทั้งหมดเกี่ยวกับอัลกอริทึมออนไลน์ที่คุณอาจรู้จัก หากมีหนังสือใด ๆ บนเว็บอย่างอิสระนั่นจะยอดเยี่ยม

3
มีอัลกอริทึมออนไลน์เพื่อติดตามส่วนประกอบในกราฟที่ไม่ได้เปลี่ยนทิศทางหรือไม่?
ปัญหา ฉันมีกราฟที่ไม่มีทิศทาง (ซึ่งมีหลายขอบ) ซึ่งจะเปลี่ยนแปลงตลอดเวลาโหนดและขอบอาจถูกแทรกและลบ ในการแก้ไขกราฟแต่ละครั้งฉันต้องอัปเดตส่วนประกอบที่เชื่อมต่อของกราฟนี้ คุณสมบัติ คุณสมบัติเพิ่มเติมคือจะไม่มีการเชื่อมต่อสองส่วนประกอบอีกต่อไป เห็นได้ชัดว่ากราฟสามารถมีรอบเป็นจำนวนเท่าใดก็ได้ (มิฉะนั้นการแก้ปัญหาจะไม่สำคัญ) ถ้า edge ไม่มีโหนดnมันจะไม่นำโหนดนั้นมาใช้ แต่ถ้าn ∈ อีก็สามารถเปลี่ยนไปn ∉อีeeennnn∈en∈en \in en∉en∉en \notin e แนวทาง ฉันมีสองแนวทางที่เป็นไปได้ แต่เท่าที่คุณจะเห็นพวกเขาน่ากลัว: ช้ารัฐน้อย ฉันสามารถค้นหา (dfs / bfs) กราฟเริ่มต้นจากองค์ประกอบที่แก้ไขทุกครั้ง สิ่งนี้ช่วยประหยัดพื้นที่ แต่ช้าเนื่องจากเรามี O (n + m) สำหรับการแก้ไขแต่ละครั้ง Stateful fast (-er) (?) วิธีการ ฉันสามารถเก็บเส้นทางที่เป็นไปได้ทั้งหมดสำหรับแต่ละโหนดไปยังโหนดที่เป็นไปได้ทั้งหมด แต่ถ้าฉันเห็นอย่างถูกต้องสิ่งนี้จะใช้หน่วยความจำ O (n ^ 4) แต่ฉันไม่แน่ใจว่าการปรับปรุงรันไทม์เป็นอย่างไร (ถ้ามีอย่างใดอย่างหนึ่งเพราะฉันต้องเก็บข้อมูลที่ทันสมัยสำหรับทุกโหนดในองค์ประกอบเดียวกัน) คำถาม …

4
การจัดกลุ่มอย่างต่อเนื่อง
ดังนั้นฉันมีปัญหาที่ฉันกำลังเผชิญกับการจัดกลุ่มกับข้อมูลสดสตรีมมิ่งอย่างต่อเนื่อง เนื่องจากฉันมีชุดข้อมูลที่เติบโตขึ้นเรื่อย ๆ ฉันไม่แน่ใจว่าวิธีใดที่ดีที่สุดในการจัดกลุ่มที่มีประสิทธิภาพและประสิทธิผล ฉันคิดวิธีแก้ปัญหาที่เป็นไปได้สองสามประการ ได้แก่ : การตั้งค่าขีด จำกัด จำนวนจุดข้อมูลที่จะอนุญาตดังนั้นเมื่อใดก็ตามที่ถึงขีด จำกัด เมื่อจุดข้อมูลอื่นเข้ามาในจุดที่เก่าที่สุดจะถูกลบออก โดยพื้นฐานแล้วสิ่งนี้จะแนะนำว่าข้อมูลที่เก่ากว่านั้นไม่เกี่ยวข้องกับเราอีกต่อไปเพื่อดูแลสิ่งที่เรากำลังสูญเสียโดยการโยนทิ้ง เมื่อมีข้อมูลเพียงพอที่จะทำการจัดกลุ่มที่ดีให้พิจารณา "การตั้งค่า" นี้และเมื่อมีจุดใหม่มาแทนที่การจัดกลุ่มข้อมูลทั้งหมดใหม่เพียงแค่คิดว่าการจัดกลุ่มศูนย์กลางใดที่จุดใหม่อยู่ใกล้ที่สุดและเพิ่มเข้าไป ประโยชน์ที่นี่คือคุณสามารถหลีกเลี่ยงการจัดกลุ่มใหม่ในทุกจุดใหม่และคุณไม่จำเป็นต้องจัดเก็บจุดอื่น ๆ ทั้งหมดเพียงแค่ศูนย์คลัสเตอร์โดยพิจารณาจากการจัดกลุ่มนี้ "ดีพอ" ข้อเสียคือการเรียกใช้อัลกอริทึมใหม่กับจุดข้อมูลทั้งหมดตั้งแต่ต้นอาจมีความแม่นยำมากขึ้น ในขณะที่เหล่านั้นเป็นวิธีแก้ปัญหาที่อาจเกิดขึ้นฉันระดมสมองฉันอยากจะรู้ว่ามีเทคนิคที่รู้จักกันดีกว่าที่จะเผชิญกับปัญหานี้ ฉันคิดว่าไซต์อย่าง Google ต้องจัดการกับมันอย่างใด (และฉันหวังว่า "เพิ่ม ram, เซิร์ฟเวอร์และโปรเซสเซอร์" หรือ "ขยายศูนย์ข้อมูลของคุณอย่างต่อเนื่อง" ไม่ใช่คำตอบเดียวที่มี)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.