การประมาณค่าเฉลี่ยในเวลาพหุนาม


20

ปล่อยf:{0,1}n(2n,1]เป็นฟังก์ชันเราต้องการประมาณค่าเฉลี่ยของนั่นคือ:(x)fE[f(n)]=2nx{0,1}nf(x)

NOTE: In the OP, the range of f was [0,1]. I changed this a bit for technical reasons. (This should simplify the problem; if not, forget it!)

ให้เป็นอัลกอริทึมการประมาณ (แบบสุ่ม) สมมติว่ามีการเข้าถึงกล่องดำที่จะฉเราหมายถึงนี้โดยฉEEfEf

มีสองเงื่อนไขคือ

1) เวลาทำงานของเครื่องมือประมาณการ:มีพหุนามเดียวp()เช่นนั้นสำหรับทุกnและfทั้งหมดfเวลาทำงานของEf(1n)ถูก จำกัด โดยp(n)E[f(n)](n)]}

2) ความแม่นยำของเครื่องมือประมาณค่าด้วยความมั่นใจδ :มีพหุนามเดียวq()เช่นนั้นสำหรับnและfทั้งหมดfเรามี1q(n)<Ef(1n)E[f(n)]<q(n)ที่มีความน่าจะเป็นอย่างน้อย\δ

NOTE: The confidence δ was not in the OP. The parameter δ is in (0,1), and may depend on n. For instance, it may be 1-1/2^n.

ตัวประมาณดังกล่าวมีอยู่จริงหรือไม่?

ความเป็นมาและแรงจูงใจ

ฉันไม่ได้พูดถึงแรงจูงใจในตอนแรกเพราะมันต้องใช้ความรู้พื้นฐานมากมาย อย่างไรก็ตามสำหรับผู้ที่ชื่นชอบฉันอธิบายสั้น ๆ : ความต้องการตัวประมาณดังกล่าวเกิดขึ้นในบริบทของ "พิสูจน์ความสามารถ" ตามที่กำหนดไว้ในบทความต่อไปนี้:

Mihir Bellare, Oded Goldreich พิสูจน์ความสามารถในการคำนวณ , 1992 ต้นฉบับที่ไม่ได้เผยแพร่

โดยเฉพาะที่ด้านล่างของหน้า 5 ผู้เขียนโดยปริยายสันนิษฐานว่าการดำรงอยู่ของตัวประมาณดังกล่าว (มีการกล่าวถึงความแม่นยำไม่ได้และเวลาการทำงานไม่ได้กำหนดไว้อย่างแม่นยำ. ยังบริบทชัดเจนกำหนดทุกอย่าง)

ความพยายามครั้งแรกของฉันคืออ่าน " ตัวอย่างของกลุ่มตัวอย่าง --- มุมมองการคำนวณเกี่ยวกับการสุ่มตัวอย่าง " มันเกี่ยวข้องกับปัญหาที่คล้ายกันมาก แต่ความน่าจะเป็นข้อผิดพลาดที่กำหนดเป็นสารเติมแต่งในขณะที่เราเป็นแบบคูณ (ฉันไม่ได้อ่านกระดาษอย่างเต็มที่บางทีมันอาจพูดถึงสิ่งที่ฉันต้องการที่ไหนสักแห่ง)

แก้ไข (ตามคำขอของซึโยชิ 's):ในความเป็นจริงความหมายของ "หลักฐานของการคำนวณความสามารถ" ต้องมีการดำรงอยู่ของ "ความรู้แยก" ที่มี (ที่คาดว่า) เวลาทำงานคือ(n)] เนื่องจากเราไม่รู้จักเราจึงต้องการประมาณมัน แต่สิ่งนี้จะต้องไม่เปลี่ยนเวลาในการทำงานอย่างมาก: ควรเปลี่ยนเป็นปัจจัยพหุนาม เงื่อนไขความแม่นยำพยายามที่จะจับความต้องการดังกล่าวp(n)E[f(n)]E[f(n)]


ฉันไม่สามารถเข้าใจสภาพความแม่นยำ อะไรทำให้อัลกอริทึม E ไม่ให้ส่งสัญญาณ 1 เสมอ คุณหมายถึง 1 / q (n) <(True value) / (มูลค่าโดยประมาณ) <q (n) หรือไม่
Tsuyoshi Ito

ดูเหมือนว่า p (n) = q (n) = O (1) และอัลกอริทึมเล็ก ๆ น้อย ๆที่เอาต์พุต "1" ควรใช้งานได้ มันเป็นเวลาการทำงานเป็น O (1) ซึ่งมีขอบเขตโดย(n)]} และความแม่นยำของมันคือ <= 1 ซึ่งน้อยกว่า q (n) Ef(1n)p(n)E[f(n)]
Robin Kothari

@Tsuyoshi & Robin: ขออภัยเพื่อนฉันพลาดไปหนึ่งเงื่อนไขด้วยความแม่นยำ ลองดูสิ!
MS Dousti

นอกจากนี้ฉันเดาว่าตัวประมาณถูกสุ่ม (เพียงเพราะมันเป็นไปไม่ได้) เป็นกรณีนี้หรือไม่? นอกจากนี้ถ้าเป็นเช่นนั้นเงื่อนไขเวลาทำงานและเงื่อนไขความแม่นยำต้องการอะไรกันแน่
Tsuyoshi Ito

1
ฉันคิดว่าฉันไม่เข้าใจคำถามอย่างชัดเจน ทำไมตัวอย่างไร้เดียงสาที่มีข้อ จำกัด chernoff ไม่ใช่ตัวประมาณที่ดี
Sylvain Peyronnet

คำตอบ:


15

แก้ไข: นี่เป็นการแก้ปัญหาของรุ่นที่ f ส่งออกเฉพาะ 0 หรือ 1 แต่ฉันคิดว่าโซลูชันสามารถปรับเปลี่ยนได้เพื่อให้ใช้ได้กับกรณีทั่วไปมากขึ้น

บางทีฉันอาจจะเข้าใจผิดคำถาม แต่มันก็ดูไม่ยากเกินไป

แทนที่จะลองประมาณค่าเฉลี่ยลองคิดถึงจำนวน 1s แล้วเรียกเลขนั้นว่า k ให้ n ดังนั้นค่าเฉลี่ยคือ k / N คุณต้องการประมาณค่านี้ภายในปัจจัยการคูณพหุนามในเวลา O (N polylog (N) / k)N=2n

ฉันคิดว่าสิ่งนี้สามารถทำได้ภายในหลายปัจจัยคูณคงที่เช่นกัน ตัวอย่างเช่นสมมติว่าคุณต้องการประมาณค่านี้ให้อยู่ในปัจจัยที่ 2 ดังนั้นเอาต์พุตของอัลกอริทึมจะอยู่ระหว่าง k / 2 ถึง 2kk

ฉันจะร่างอัลกอริทึมซึ่งควรมีเวลาทำงานที่เหมาะสม ก่อนอื่นให้ตรวจสอบว่า k อยู่ระหว่าง N / 2 ถึง N นี่เป็นเรื่องง่ายแค่ลองสุ่มค่าสองสามค่าและถ้าคุณได้มากกว่าครึ่ง คุณมีการประมาณ 2 ค่า หากไม่เป็นเช่นนั้นให้ตรวจสอบว่าอยู่ระหว่าง N / 4 ถึง N / 2 หรือไม่ และอื่น ๆ ทุกครั้งที่คุณทำให้ช่วงเวลามีขนาดเล็กลงจะมีค่าใช้จ่ายมากขึ้นในการประเมินว่า k อยู่ในช่วงนั้นหรือไม่ แต่ต้นทุนนั้นแปรผกผันกับช่วงเวลาที่เล็ก

ตัวอย่างเช่นหากคุณกำลังตรวจสอบว่า k อยู่ระหว่างและ2 N / 2 qคุณต้องทำการสอบถามเกี่ยวกับO ( 2 q ) อย่างไรก็ตามหลังจากทำซ้ำขั้นตอนนี้มากพอแล้วคุณควรได้รับช่วงเวลาที่ k อยู่ Say k อยู่ระหว่างN / 2 Qและ2 N / 2 Q แล้ว k ประมาณN / 2 Q ดังนั้น2 คิวN/2q2N/2qO(2q)N/2q2N/2qN/2q2qเป็นเรื่องเกี่ยวกับ k / N ดังนั้นในขั้นตอนนี้เราจะใช้การค้นหา O (k / N) แต่การเข้าสู่ขั้นตอนนี้จำเป็นต้องใช้ q ขั้นตอนอื่น ๆ แต่นั่นเป็นเพียงปัจจัยเสริมที่เข้าสู่ระบบ ดังนั้นเวลาทำงานโดยรวมคือ O (N polylog (N) / k) สำหรับการประมาณ 2 ครั้ง

(จริง ๆ แล้วจะต้องทำการขยายข้อผิดพลาดเพื่อให้ได้ความแม่นยำที่เหมาะสมในแต่ละขั้นตอน แต่นั่นเป็นเพียงปัจจัยเสริมเท่านั้น)


เหตุผลที่ฉันชอบคิดในกระบวนการหลายขั้นตอนนี้คือมันเน้นกระบวนการเป็นเดาและตรวจสอบก่อน หากมีคนบอกคุณว่าอยู่ระหว่างN / 2 qและ2 n / 2 qคุณสามารถประมาณค่าได้เพื่อให้แม่นยำยิ่งขึ้นเมื่อทราบข้อเท็จจริงนี้ในเวลาที่สัญญาไว้ ดังนั้นเราจึงจำเป็นที่จะขจัดขั้นตอนของการที่จะได้รับการคาดเดาสำหรับที่k สิ่งนี้ทำได้โดยการค้นหาแบบไบนารีในทุกช่วงเวลาที่เป็นไปได้ของประเภทนั้นkN/2q2n/2qk

หากต้องการทำให้กรณีนี้เป็นเอาต์พุตที่ไม่ใช่บูลีนแทนที่จะนับจำนวน 1s เพียงแค่รวมค่าที่เห็น ฉันจะพยายามหาข้อมูลอ้างอิงเพื่อแสดงให้เห็นว่าสิ่งนี้ได้ผลอย่างจริงจัง


(1) เนื่องจากฟังก์ชัน f อาจใช้ค่าที่ไม่ได้รวมคุณอาจต้องการใช้ผลรวมของค่าแทนจำนวน 1s (2) เราต้องประเมินทีละขั้นหรือไม่? ฉันเดาว่าเราสามารถทำได้ในขั้นตอนเดียวเพียงแค่ทำซ้ำจนกว่าผลรวมจะเกินพหุนามคงที่ ดูความเห็นของฉันสำหรับคำถามด้วย
Tsuyoshi Ito

โอ้ฉันไม่ได้สังเกตว่าช่วงคือ [0,1] ฉันคิดว่ามันคือ {0,1} แต่ฉันเดาว่าขั้นตอนเดียวกันใช้ได้ผล บางทีเราสามารถลดปัญหาหนึ่งลงอีกอันหนึ่งได้เพราะเราสามารถ "นับ" จำนวน 1s ในตำแหน่งเฉพาะของการแทนค่าฐานสองของเอาต์พุตด้วยความแม่นยำที่เพียงพอ เกี่ยวกับ (2) ฉันคิดว่าขั้นตอนของคุณเทียบเท่า ฉันคิดว่ามันเป็นแบบนี้เพราะมันให้ความรู้สึกเหมือนเป็นกระบวนการเดาและตรวจสอบเช่นให้ k ที่มีการประเมินที่ไม่ดีพอ ฉันจะเพิ่มลงในคำตอบของฉัน
Robin Kothari

ฉันยอมรับว่าอัลกอริทึมทั้งสองนั้นเหมือนกัน นอกจากนี้สำหรับ [0,1] และ {0,1} อัลกอริทึมของคุณอาจทำงานได้ตามที่ระบุไว้หลังจากแทนที่การประเมินแต่ละค่าที่ไม่ครบถ้วน f (x) ด้วยการโยนเหรียญ (1 wp f (x) และ 0 wp 1-f (x))
Tsuyoshi Ito

@ Robin: ขอบคุณสำหรับคำตอบ มีบางอย่างที่ไม่ชัดเจนสำหรับฉัน: คุณพูดว่า: "เพียงแค่สุ่มค่าสองสามตัวอย่างและถ้าคุณได้รับมากกว่าครึ่ง 1 แล้วมันอยู่ในช่วงเวลานี้" ฉันเชื่อว่าสิ่งนี้จะต้องเป็นปริมาณ: ตัวอย่างจำนวนเท่าใดที่ให้ผลแม่นยำ (ฉันเปลี่ยน OP เพื่อพิจารณาความมั่นใจมิเช่นนั้นมันจะเป็นไปไม่ได้ที่จะออกแบบตัวอย่างที่ต้องการ!)
MS Dousti

@Sadeq: นั่นคือการเชื่อมโยง chernoff หากคุณคาดหวังว่า k จะเป็น n / 2 (ตัวอย่างเช่นเหรียญยุติธรรม) จากนั้นคุณสามารถเขียนหางที่ผูกไว้เพื่อดูมากกว่า n (1 + eps) / 2 และคล้ายกันสำหรับขอบเขตล่าง
Suresh Venkat

3

Let แสดงค่าของนำไปใช้กับลำดับอนันต์ของกลุ่มตัวอย่างแบบสุ่ม (ด้วยการเปลี่ยน) จาก{ 0 , 1 } n ให้kเป็นจำนวนเต็มบวกอย่างน้อยเช่นว่าΣ k ฉัน= 1ฉันMสำหรับค่าบางMบางทีM = P o L Y L o กรัม( n ) ฉันเดาว่าตัวประมาณM /f1,f2,f{0,1}nki=1kfiMMM=polylog(n)ควรบรรลุสิ่งที่คุณต้องการM/k

สำหรับการวิเคราะห์คุณไม่สามารถใช้ Chernoff ขอบเขตโดยตรงกับตัวแปรสุ่มแต่มีเคล็ดลับเพื่อให้คุณสามารถใช้ Chernoff ได้ ให้μแสดงถึงความคาดหวังที่ไม่รู้จักE ( ) หาค่าคงที่k l o wและk h i g h (ฟังก์ชันของμ ) เพื่อให้มีความน่าจะเป็นอย่างน้อย1 - δเรามีk l o w i = 1 f i < Mและk hkμE(f)klowkhighμ1δi=1klowfi<MM ผลรวมของบรรดาฉันs สามารถกระโดดใช้ Chernoff ตามด้วยklow<k<khighด้วยความน่าจะเป็นอย่างน้อย1-δดังนั้นตัวประมาณM/kจึงมีความเข้มข้นดีi=1khighfi>Mfiklow<k<khigh1δM/k

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