การคำนวณความเท่าเทียมกันของการเรียงสับเปลี่ยนแบบสตรีมมิ่ง


16

ฉันกำลังมองหาอัลกอริทึมแบบ one-pass ซึ่งคำนวณพาริตี้ของการเปลี่ยนแปลง ฉันคิดว่าการเปลี่ยนแปลงการป้อนข้อมูลจะได้รับจากกระแส ] ผลลัพธ์ควรเป็นความเท่าเทียมกันของการเปลี่ยนแปลง คำถามที่ฉันสนใจว่าควรใช้อัลกอริธึมกำหนดค่าความจำเท่าใด มีอัลกอริทึมแบบสุ่มสำหรับปัญหาหรือไม่π[1],π[2],,π[n]

ฉันรู้ว่าการคำนวณจำนวนผู้รุกรานในหนึ่งรอบใช้หน่วยความจำขอบเขตบนสามารถหาได้ง่ายด้วย BST ใด ๆ ขอบเขตล่างถูกแสดงไว้ที่นี่: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.1.112.5622Θ(n)

อนิจจาหลักฐานของขอบเขตล่างในกระดาษไม่สามารถขยายไปยังกรณีพาริตี้ (หรือไม่ชัดเจนดังนั้นสำหรับฉัน)

นอกจากนี้ฉันรู้ว่าการคำนวณความเท่าเทียมกันในพื้นที่เล็ก ๆ ด้วยการเข้าถึงการเปลี่ยนแปลงแบบสุ่มสามารถทำได้ในเวลาและO ( log 2 n )หน่วยความจำโดยอัลกอริทึมที่กำหนดหรือในO ( n log n )เวลาและO ( log n )หน่วยความจำโดยการสุ่ม ดูhttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256O(nlogn)O(log2n)O(nlogn)O(logn)

แนวคิดหลักคือความเท่าเทียมกันของการเปลี่ยนแปลงสามารถคำนวณได้โดยสูตรโดยที่cคือจำนวนรอบและnคือขนาด ผู้เขียนทำให้วงจรการสลายตัวของการเปลี่ยนแปลง ดังนั้นเราสามารถคำนวณจำนวนรอบได้อย่างง่ายดายsgn(π)=(1)nccn

ไม่มีใครรู้ว่าอัลกอริทึมที่มีประสิทธิภาพหรือขอบเขตที่ต่ำกว่าในหน่วยความจำสำหรับการคำนวณความเท่าเทียมกันในรูปแบบการสตรีมมิ่ง? อัลกอริธึมแบบสุ่มดีกว่าเหรียญสุ่มก็น่าสนใจเช่นกัน


มันน่าสนใจ คุณสามารถวาดหลักฐานหรือตั้งชื่อปัญหาซึ่งคุณลดความเท่าเทียมกันได้หรือไม่?
Vsevolod Oparin

4
@ András: อัลกอริทึมพื้นที่ O (n) ใช้งานไม่ได้ง่ายๆโดยการติดตามว่ามีองค์ประกอบใดบ้างที่ได้เห็นแล้ว (พูดใน bitvector) จากนั้นสำหรับแต่ละองค์ประกอบใหม่ x เพิ่มความเท่าเทียมกันของ # ยัง องค์ประกอบที่มองเห็นมีขนาดเล็กกว่า x
László Kozma

1
@laszlo ขอบเขตบนตอนนี้ดูเหมือนจะน่าเชื่อถือสำหรับฉันมากกว่าข้อโต้แย้งของฉันสำหรับขอบเขตล่างที่ใหญ่กว่า O(n)
András Salamon

หนึ่งผลลัพธ์เชิงลบสำหรับขอบเขตล่าง ผู้เขียนกระดาษแรกให้การเปลี่ยนแปลงขึ้นอยู่กับสองชุดและB พวกเขาใช้มันเพื่อคำนวณว่าAและBตัดกันหรือไม่ การคำนวณความเท่าเทียมกันของการเปลี่ยนแปลงใช้เวลาเพียง 3 บิตในการสื่อสารทางเดียว สามารถหาได้ง่ายโดยคำนวณอันดับของเมทริกซ์ที่เกี่ยวข้อง π=A0¯B1A0B1¯ABAB
Vsevolod Oparin

1
ที่เกี่ยวข้อง: stackoverflow.com/questions/20702782/…
domotorp

คำตอบ:


2

ฉันอยากจะขอไม่ให้ทุกคนโหวตเพราะนี่ไม่ใช่คำตอบ แต่เป็นการแสดงความคิดเห็นเพิ่มเติมซึ่งฉันอยากจะโต้แย้งว่าทำไมคำถามนี้ไม่ได้รับคำตอบใด ๆ ประเด็นหลักของฉันคือความซับซ้อนของการสื่อสารที่ต่ำกว่าขอบเขตจะไม่ทำงาน จากนี้ฉันหมายความว่าไม่ว่าเราจะตัดอินพุตเป็นสองส่วนและมอบให้ผู้เล่นสองคนคือ A และ B, A สามารถถ่ายโอนบิตไปยัง B ซึ่งเขาสามารถคำนวณความเท่าเทียมกันของการเปลี่ยนแปลง (สิ่งนี้ติดตามได้ง่ายๆโดยพิจารณาจากการรุกราน)

หลักฐานที่ใช้ขอบเขตอื่นนั้นยาก ดูความคิดเห็นนี้ได้ที่นี่โดย Noam Nisan (สำหรับเวอร์ชันที่ไม่ได้กำหนดไว้): ขอบเขตบนขนาดของ NFA ที่เล็กที่สุดสำหรับ L_k-different ,

คำถามที่เกี่ยวข้องนี้ด้วยตัวเองตอบโดยแฮร์มันน์ Gruber ซึ่งแสดงให้เห็นว่าความซับซ้อนของการสื่อสารขอบเขตล่างได้ไกลมากจากความจริง (อีกครั้งในรุ่นที่ไม่ใช่กำหนด) ขอบเขตล่างสำหรับ NFA ยอมรับ 3 ภาษาตัวอักษร

สิ่งที่เกี่ยวข้องกับการตัดสินใจว่าการเปลี่ยนรูปเป็นรอบเดียวดูเหมือนจะยากหรือไม่ดูบทความเรื่อง FOCS ของ Ran Raz และ Boris Spieker: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html

ดังนั้นฉันจึงสนใจที่จะเรียนรู้คำตอบสำหรับคำถามนี้


เมื่อคุณพูดว่า "ไม่ว่าเราจะตัดอินพุตเป็นสองส่วนหรือไม่" อาร์กิวเมนต์ของคุณออกกฎการลดลงเมื่อการเรียงสับเปลี่ยนแบ่งออกเป็นสองส่วนมากกว่าหรือไม่ ตัวอย่างเช่นในกระดาษที่เชื่อมโยงเกี่ยวกับการนับจำนวนผู้รุกรานมีการลดลงจากความไม่ต่อเนื่องของชุดที่ Alice และ Bob มีอินพุตและพวกเขาฟอร์มพีชคณิต¯ A 0 B 1 A 0 ¯ B 1และ¯ 1 B 0 1 ¯ B 0 ดัชนี 0 หรือ 1 หมายถึงการแปลง2 xA,B[n]A0¯B1A0B1¯A1¯B0A1B0¯2x2x+1

@laszlo: ในปัญหานี้มันไม่สำคัญว่าคุณจะตัดอินพุตตราบเท่าที่คุณให้มันกับผู้เล่นเพียงสองคนเนื่องจากความเท่าเทียมกันของการเปลี่ยนแปลงถูกกำหนดโดยจำนวนรอบของมัน (ดังนั้นนี่คือเหตุผลที่มันแตกต่างจากจำนวน ของการรุกราน)
domotorp

มันง่ายไหมที่จะเห็นว่า A สามารถคำนวณบิตจากอินพุตของเธอโดยใช้ B อันใดที่สามารถคำนวณพาริตีได้? ฉันเห็นว่าทั้ง A และ B รู้จำนวนรอบ "ในส่วนของพวกเขา" แต่พวกเขาพบความแตกต่างของ # ของวงจร "ข้าม" ได้อย่างไร
László Kozma

2
@laszlo: สมมติว่าอินพุตของ A เป็นอะไรเช่น 1-> 7, 2-> 5, 3-> 8, 4-> 6 มีจำนวน inversions เท่ากับ 1-> 5, 2-> 6, 3-> 8, 4-> 7 โดยทั่วไปแล้ว B รู้ว่าตัวเลขใดของตัวเลขที่ถูกแมป การใช้จำนวนคู่ผกผัน A สามารถเปลี่ยนตัวเลขเหล่านี้เป็นลำดับที่เพิ่มขึ้นยกเว้นอาจเป็นไปได้สำหรับสองรายการสุดท้าย ความสัมพันธ์ของตัวเลขสองตัวสุดท้ายนี้คือหนึ่งบิตที่เธอส่ง
domotorp

@ domotor: คำถามติดตาม - ถ้า A ได้รับ a1,...,an, B ได้รับ an+1,...,a2n, C ได้รับ a2n+1,...,a3n ของการเปลี่ยนแปลง a ของ [3n]พวกเขาสามารถสร้างความเท่าเทียมกันด้วย โอ(n)บิตของการสื่อสาร
László Kozma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.