ตัวอย่างที่โดดเด่นของแนวคิดรากที่สองในการวิเคราะห์ความซับซ้อน


15

k = max{k,n/k}k=n

  • baby-step อัลกอริทึมยักษ์ขั้นตอนสำหรับการคำนวณลอการิทึมไม่ต่อเนื่องในO(n) ,
  • ช่วง 2D แบบคงที่นับในO(n)เวลาและO(n)หน่วยความจำ
  • คิวลำดับความสำคัญด้วยสารสกัดจากนาทีในO(nk)และลดลงใน-KEY O(1) ,
  • การระบายสีกราฟ 3 สีด้วยO(n)ในเวลาพหุนาม

เพียงเพื่อชื่อไม่กี่

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

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


ฉันขอโทษถ้าคำถามนั้นค่อนข้างคลุมเครือ อย่าลังเลที่จะปรับปรุง
Dmytro Korduban

นี่ควรเป็น CW หรือไม่?
Suresh Venkat

2
@Suresh: หากกฎ“ ใหญ่รายการ⇒ CW” ยังคงมีผลบังคับใช้แล้วใช่มันควรจะเป็น CW
Tsuyoshi Ito


มันเป็นกลวิธีพื้นฐานทั่วอัลกอริทึมล่าสุดสำหรับการลดขนาดแผนที่
Sasho Nikolov

คำตอบ:


10

Chazelle, Liu และ Magen ของกระดาษSublinear Geometric Algorithms (STOC 2003, SICOMP 2006) มีแอพพลิเคชั่นที่ชาญฉลาดหลายอย่างของการสุ่มตัวอย่างแบบสุ่มต่อไปนี้ Gärtnerและ Welzl [ DCG 2001 ] เคยใช้รูปแบบการหลอกลวงแบบเดียวกันนี้ซึ่งอ้างถึง CLR รุ่นแรก (1990)

สมมติว่าเราได้รับการเรียงลำดับรายการตัวเลขที่เชื่อมโยงวงกลมเรียงลำดับไว้ในบล็อกของหน่วยความจำที่ต่อเนื่องกัน นั่นก็คือเรามีสองอาร์เรย์และเอ็นอีx T [ 1 .. n ]ที่Key[1..n]Next[1..n]

  • เก็บชุดของตัวเลข nตามลำดับโดยพลการ ;Key[1..n]n
  • หากเป็นจำนวนมากที่สุดในชุดดังนั้นK e y [ N e x t [ i ] ]เป็นจำนวนที่น้อยที่สุดในชุด มิฉะนั้นK อีY [ N E x T [ ผม] ]เป็นจำนวนที่เล็กที่สุดในชุดที่มีขนาดใหญ่กว่าK อีY [ ผม ]Key[i]Key[Next[i]]Key[Next[i]]Key[i]

จากนั้นเราสามารถหาตัวตายตัวแทนของตัวเลขที่กำหนดในO ( xเวลาที่คาดหวังมีดังนี้:O(n)

  • เลือกตัวอย่างแบบสุ่มขององค์ประกอบของอาร์เรย์KEปี ให้Key[j]เป็นตัวอย่างที่ใหญ่ที่สุดที่มีขนาดเล็กกว่าx(หรือตัวอย่างที่ใหญ่ที่สุดหากตัวอย่างทั้งหมดมากกว่าx)nKeyKey[j]xx

  • ติดตามตัวชี้จากK อีY [ J ]จนกว่าเราจะเห็นมากขึ้นจำนวนกว่าหรือเท่ากับx (หลังจากการตัดรอบหากทุกตัวอย่างมีขนาดใหญ่กว่าx )ยังไม่มีข้อความอีxเสื้อKอีY[J]xx

การประยุกต์ใช้บทแทรกที่ค่อนข้างง่ายของ Yao แสดงให้เห็นว่าขอบเขตเวลาที่คาดว่าเหมาะสมที่สุด อัลกอริทึมที่กำหนดขึ้นสำหรับปัญหานี้ต้องใช้เวลาΩ(n)ในกรณีที่เลวร้ายที่สุดO(n)Ω(n)


10

มีรูปสามเหลี่ยมใด ๆ ในม.กราฟ -edge และที่พวกเขาสามารถพบได้ในO ( ม. 3 / 2 )เวลา มีหลายวิธีในการทำเช่นนี้ แต่ฉันคิดว่าหนึ่งในสิ่งแรกสุดคือItai และ Rodeh (STOC 1977)ที่ให้อัลกอริทึมที่ผ่านการทำซ้ำของการแสดงเวลาเป็นเส้นตรงซึ่งแต่ละอันจะกำจัดป่าที่ขยายออกจากกราฟ ในการวนซ้ำเริ่มต้นเมื่อฟอเรสต์ที่เหลือมีองค์ประกอบn - kเป็นอย่างน้อยอัลกอริทึมจะลบอย่างน้อยk edge ต่อขั้นตอนและในการวนซ้ำครั้งสุดท้ายเมื่อมีมากที่สุดO(m3/2)mO(m3/2)nkkส่วนประกอบ n - kค่าสูงสุดคือ kและลดขนาดอย่างน้อยหนึ่งในแต่ละขั้นตอน ดังนั้นจำนวนการวนซ้ำทั้งหมดจึงมากที่สุด m / k + kและการเลือกการแลกเปลี่ยนที่ถูกต้องจะให้ขอบเขตโดยรวมของ O ( nkkm/k+kในการทำซ้ำและO(ม. 3 / 2 )ในเวลาO(m)O(m3/2)

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