ฉันคิดว่าตอนนี้ฉันสามารถแสดงให้เห็นถึงขอบเขตล่างที่ไม่สำคัญ แนวคิดคือการนำโปรแกรมดังกล่าวไปใช้กับโปรแกรมเปรียบเทียบการแยกสาขา สมมติฐาน `แบบอ่านอย่างเดียว 'หมายความว่าครอบครัวของโปรแกรมการแตกสาขาของเราใช้เพียงเล็กน้อยคือพื้นที่ จากนั้นเราใช้ขอบเขตล่างS T = Ω ( n 2 ) ที่พิสูจน์โดย Borodin และคณะ ใน "การแลกเปลี่ยนพื้นที่เวลาสำหรับการเรียงลำดับบนเครื่องที่ไม่ลืมเลือน" นี้จะช่วยให้เราn 2 /บันทึกnผูกพันลดลงเป็นครั้งที่O(logn)ST=Ω(n2)n2/logn
รายละเอียดเพิ่มเติมเล็กน้อย: เราสามารถแจกจ่ายด้วยการปฏิบัติการ 5 ด้านบน การพูดอย่างหลวม ๆ ถ้าเราสามารถเปรียบเทียบหัวของสองรายการและพิมพ์ส่วนหัวของรายการแล้วก็ไม่จำเป็นที่เราจะต้องแยกส่วนหัวของรายการในการลงทะเบียนที่เฉพาะเจาะจง ด้วยเหตุนี้เราจะเห็นว่าการลงทะเบียนทุกครั้งในเครื่องจะเก็บซับสตริงสุดท้ายของอินพุตเท่านั้น
สมมติว่าโปรแกรมของเรามีการลงทะเบียนบรรทัดของรหัสและkจิX 1 , ... , X kℓkX1,…,Xk
แก้ไขnเราสร้างโปรแกรมเปรียบเทียบการแตกสาขาสำหรับสตริงที่มีความยาวnดังนี้ สร้างโหนดสำหรับแต่ละ tuple ( ฉัน, d 1 , ... , d k )ที่1 ≤ ฉัน≤ ℓ และ0 ≤ d 1 , ... , d k ≤ n แนวคิดคือการคำนวณในเครื่องลงทะเบียนสอดคล้องกับเส้นทางในโปรแกรมการแยกสาขาและเราอยู่ที่โหนด( i , d 1 , … , dnn(i,d1,…,dk)1≤i≤ℓ0≤d1,…,dk≤nถ้าเราจะอยู่ที่เส้นฉันในเครื่องลงทะเบียนและความยาวของสตริงที่เก็บไว้ใน X ฉันคือ dฉัน ตอนนี้เราต้องกำหนดขอบกำกับของโปรแกรมการแยกสาขา(i,d1,…,dk)iXidi
หากบรรทัดเป็นของแบบฟอร์มi
ถ้ากลับไปที่iอีก1กลับไปที่i 2Xu<Xvi1i2
แล้วสำหรับทุกโหนด( ฉัน, d 1 , ... , d k )จะมีป้ายโดยการเปรียบเทียบd ยู -th และd วีองค์ประกอบ -th ของการป้อนข้อมูลและการมี "ความจริง" ขอบไปที่( i 1 , d 1 , … , d k )และขอบ "false" ถึง( i 2 , d 1 , … , d kd1,…,dk(i,d1,…,dk)dudv(i1,d1,…,dk) .(i2,d1,…,dk)
หากบรรทัดเป็นของแบบฟอร์มi
, goto line i ′X1←tail(X2)i′
แล้วมีลูกศรจากโหนดใด ๆจะ( ฉัน' , d 2 - 1 , ... , d k )(i,d1,…,dk)(i′,d2−1,…,dk)
หากบรรทัดเป็นของแบบฟอร์มi
, goto line i ′print(head(Xu))i′
จากนั้นจะมีลูกศรจากโหนดใด ๆถึง( i ′ , d 1 , … , d k )ซึ่งมีข้อความกำกับโดยโหนดd u- th ของอินพุต(i,d1,…,dk)(i′,d1,…,dk)du
หวังว่าตัวอย่างเหล่านี้ทำให้ชัดเจนว่าฉันตั้งใจจะสร้างโปรแกรมการแยกสาขาของฉัน เมื่อทั้งหมดได้ถูกพูดและทำโปรแกรมแตกแขนงนี้มีที่มากที่สุดโหนดจึงมีพื้นที่O ( บันทึกn )ℓ⋅nkO(logn)