วิธีง่ายๆในการพิสูจน์ว่าอัลกอริทึมนี้สิ้นสุดลงในที่สุด


10

บทนำและสัญลักษณ์:

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

ปล่อยสัญกรณ์อ้างถึงจุดข้อมูลมิติ (เวกเตอร์) ฉันมีสามชุด A, B และ C เช่นนั้น , , : x i ∈ R pxผม∈ Rพี p พี| A | = n | A | =n| B | = m | B | =m| C | = l | ค| =lA = { x i | ฉัน= 1 , . , n }

A = { xผม| ฉัน=1, . ,n}
B = { x j | J = n + 1 , . , n + m }
B = { xJ| J=n+1, . ,n+m}
C = { x u |U = n + M + 1 , . , n + m + l }
ค= { xยู| U=n+M+1, . ,n+m+l}

ให้ , ให้แสดงถึงระยะทางแบบยุคลิดเฉลี่ยจากถึงอยู่ใกล้ที่สุดในจุด ; และหมายถึงระยะทางยุคลิดเฉลี่ยจากไปของที่ใกล้ที่สุดจุดCk ∈ N ∗k ∈ N* * * * d A x idAxผม x ixผม k kA Ad C x idคxผม x ixผม k kCค

ขั้นตอนวิธีการ:

ฉันมีอัลกอริทึมต่อไปนี้ซึ่งแก้ไขชุด A และ B ซ้ำ ๆ โดยการย้ายองค์ประกอบบางอย่างที่เลือกจาก A ไป B และในทางกลับกันและ C ยังคงเหมือนเดิมเสมอ (ไม่เปลี่ยนแปลง) ที่จะทำให้มันง่าย: วัตถุประสงค์ของขั้นตอนวิธีคือการที่ดีกว่าแยกชุดและดังกล่าวว่า "จุดของมีความคล้ายคลึงกับที่รู้จักกันคงชุด " และ "จุดของเป็นที่สุดด้วยตนเองที่คล้ายกันและ ยิ่งห่างจากตัวและเซตสุดท้าย ":A AB BB BC คA AC คBB

  • A ′ = { x i ∈ A ∣ d A x i > d C x i }A'= { xผม∈ A ∣ dAxผม> dคxผม} ... (1)
  • A = A ∖ A ′A = A ∖ A' ; ... (2)B = B ∪ A ′B = B ∪ A'
  • B ′ = { x i ∈ B ∣ d A x i < d C x iB'= { xผม∈ B ∣ dAxผม<dคxผม } ... (3)
  • B = B ∖ B ′ A = A ∪ B ′B = B ∖ B' ; ... (4)A = A ∪ B'
  • ทำซ้ำ (1), (2), (3) และ (4) จนกระทั่ง: (ไม่มีอิลิเมนต์ย้ายจากไปหรือจากถึงนั่นคือ A 'และ B' ว่างเปล่า) หรือ (หรือ )A B B A | A | ≤ k | B | ≤ kABBA| A | ≤k| B | ≤k

อัลกอริทึมสิ้นสุดลงในสองกรณี:

  • เมื่อหรือกลายเป็นน้อยกว่าหรือเท่ากับ| A | | B | k| A || B |k
  • หรือกรณีมาตรฐานมากที่สุดเมื่อซึ่งหมายความว่าไม่มีการย้ายองค์ประกอบระหว่าง A และ B อีกต่อไปA ′ = B ′ = ∅A'= B'= ∅

คำถาม:

จะพิสูจน์ได้อย่างไรว่าในที่สุดอัลกอริทึมนี้จึงถูกยกเลิก ฉันไม่พบฟังก์ชันที่มีศักยภาพที่สะดวกซึ่งสามารถลดหรือขยายให้ใหญ่สุดโดยอัลกอริทึม ฉันได้ลองใช้งานฟังก์ชั่นบางอย่างไม่สำเร็จ: ฟังก์ชันแต่มันไม่เพิ่มขึ้นในการทำซ้ำแต่ละครั้ง ฟังก์ชันแต่จะไม่ลดลงในการทำซ้ำแต่ละครั้ง ฟังก์ชันดูเหมือนจะไม่ลดลงในการทำซ้ำแต่ละครั้ง ฟังก์ชัน∑ x ∈ A d C x + ∑ x ∈ B d A x ∑ x ∈ A d A x + ∑ x ∈ B d C x ∑ x ∈ A d A x + ∑ x ∈ B d B x ∑ x ∈ A d B x + ∑ x ∈ B d A xΣx ∈ Adคx+ ∑x ∈ BdAxΣx ∈ AdAx+ ∑x ∈ BdคxΣx ∈ AdAx+ ∑x ∈ BdBxΣx ∈ AdBx+ ∑x ∈ BdAxดูเหมือนจะไม่เพิ่มขึ้นในแต่ละรอบซ้ำ ดังนั้นฟังก์ชั่นศักยภาพที่สะดวกสบายซึ่งสามารถแสดงให้เห็นว่าเพิ่มขึ้นหรือลดลงในแต่ละรอบซ้ำคืออะไร? หรือเราควรจะแสดงให้เห็นว่าฟังก์ชั่นลดลง แต่ไม่ได้ที่การทำซ้ำแต่ละครั้ง (หลังจากทำซ้ำบางอย่างค่อนข้าง)? ได้อย่างไร

หมายเหตุ:

  • ที่ใกล้ที่สุดที่จะจุดในชุดหมายถึงการที่:คะแนน (คนอื่น ๆ กว่า ) ในมีระยะทางแบบยุคลิดเล็กที่สุดไป xคุณสามารถใช้เพื่อทำให้การวิเคราะห์ง่ายขึ้นk x S k x S x k = 1kxSkxSxk = 1
  • ฉันไม่รู้ว่าสิ่งนี้จะช่วยได้หรือไม่ แต่ฉันมีคุณสมบัติต่อไปนี้สำหรับชุดเริ่มต้นของฉัน : เริ่มแรก , ถ้าเป็นจุดที่ใกล้ที่สุด เพื่อและเป็นจุดที่ใกล้ที่สุดเพื่อแล้วเสมอx_a) สังหรณ์ใจนี้หมายความว่าจุดมีความใกล้ชิดกับกว่าคะแนนในA , B , C ∀ x ฉัน ∈ B , x j ∈ A x b ∈ C x ฉันx a ∈ C x j d ฉันs t a n c e ( x i , x b ) < d ฉันs t a n c e ( x j , x a ) B C AA , B , C∀ xผม∈ B , xJ∈xข∈ Cxผมxa∈ CxJdistance(xi,xb)<distance(xj,xa)BคA
  • หากการวิเคราะห์นั้นง่ายขึ้น: เป็นไปได้โดยสิ้นเชิงที่จะพิจารณาอัลกอริธึมรุ่นที่แตกต่างกันเล็กน้อยโดยทันทีที่จุดจากควรย้ายไปยังจะถูกย้ายจากไป (โดยไม่ผ่าน ) และ พิพาทในทางกลับกันสำหรับBA B A B A ′ BABABA'B

3
ทำไมคุณถึงสนใจอัลกอริทึมนี้โดยเฉพาะ?

1
shna: คุณต้องการทำอะไรกับการรวบรวมคะแนนโดยพลการแบ่งออกเป็นสามชุด?

4
@shna การรู้วัตถุประสงค์และเป้าหมายของอัลกอริทึมอาจนำไปสู่สัญชาตญาณที่ดีขึ้นและช่วยแก้ไขปัญหา

@RichardRast เพื่อให้คำอธิบายง่ายๆ: จุดประสงค์คือการที่ดีกว่าแยกชุดและดังกล่าวว่า "จุดของมีความคล้ายคลึงกับที่รู้จักกันคงชุด " และ "จุดของเป็นที่สุดด้วยตนเองที่คล้ายกันและ ห่างจากตัวและเซตสุดท้าย" A B B C A C BABBคAคB
— shn

การย้ายถิ่นไปยังร้านค้าถูกปฏิเสธ

คำตอบ:


2

นี่คือวิธีแก้ปัญหาสำหรับกรณี :k = 1k = 1

สมมติว่าอัลกอริทึมไม่ยุติ เนื่องจากมีจำนวนสถานะของอัลกอริธึม จำกัด (การกำหนดจุดให้และ ) สถานะอัลกอริทึมจะต้องทำซ้ำในรอบ เนื่องจากวัฏจักรผ่านสภาวะที่แตกต่างกันจึงต้องมีจุดที่สลับระหว่างและบ่อยครั้งไม่สิ้นสุดA B A BABAB

ให้เป็นจุดที่สลับบ่อย ๆ ในรอบนี้ เลือกซ้ำแรกของอัลกอริทึมที่อยู่ในวงจรระหว่างที่สวิทช์จากไป สำหรับเพื่อสลับไปยัง, ต้องมีอย่างน้อยหนึ่งจุดในกับx') เลือกจุดดังกล่าวที่เล็กที่สุดโดยพลการ; กำหนดฟังก์ชั่นเพื่อให้x' โปรดทราบว่าต้องสลับระหว่างและบ่อยครั้งไม่สิ้นสุด (เพราะถ้าอยู่ในx x B x x ' d C x > d ฉันs T ( x , x ' ) ฉฉ( x ) = x ' x ' B x ' x F ( F ( x ) ) , เอฟ( F ( ฉ( x ) ) ) ,xxBAxAx'Adคx> dฉันs T ( x , x')ฉf(x)=x′x′ABx′Aอย่างถาวรดังนั้นจะ ) ดังนั้นเราจึงสามารถใช้ฯลฯxf(f(x)),f(f(f(x))),

เนื่องจากเรามีจำนวน จำกัด ของจุด iterates ของ f ในที่สุดก็ต้องทำซ้ำ: สำหรับบางn ตอนนี้ดูลำดับของระยะทางจาก C: . เนื่องจากมันทำซ้ำลำดับนี้จึงไม่สามารถลดลงอย่างสม่ำเสมอ ต้องมีการวนซ้ำเช่นนั้นฉn ( x ) = ฉเมตร ( x ) ม> n d C F ( x ) , d C F 2 ( x ) , . . d C ฉn ( x ) , . . o d C f o - 1 ( x ) ≤ d C f o ( x )fn(x)=fm(x)m>ndCf(x),dCf2(x),...dCfn(x),...odCfo−1(x)≤dCfo(x)

ตอนนี้และอยู่ใกล้กันพอที่จะทำให้กันและกันอยู่ในถ้าหนึ่งในนั้นคือ นั่นคือพวกเขาอยู่ใกล้กันมากกว่าหนึ่งในนั้นคือ : (จากคำจำกัดความของ )ฉo - 1 ( x ) ฉo ( x ) C D C F o ( x ) ≥ d C F o - 1 ( x ) > d ฉันs T ( ฉo - 1 ( x ) , ฉo ( x ) ) ffo−1(x)fo(x)ACdCfo(x)≥dCfo−1(x)>dist(fo−1(x),fo(x))f

ดังนั้นทันทีที่และทั้งคู่อยู่ในพวกเขาจะเก็บกันและกันในตลอดกาล (ดูบรรทัด 1-2 ของอัลกอริทึม) สิ่งนี้ขัดแย้งกับความจริงที่ว่าค่าซ้ำทั้งหมดของต้องสลับตั้งบ่อยครั้งอย่างไม่สิ้นสุด ดังนั้นสำหรับกรณีที่อัลกอริทึมจะสิ้นสุดลงf o - 1 ( x ) f o ( x ) A A f k = 1fo−1(x)


นี้มีความซับซ้อนอย่างใดและอาจจะแสดงเฉพาะสำหรับ1 แต่จะดีกว่ามากถ้าเราสามารถหาฟังก์ชั่นที่มีศักยภาพซึ่งสามารถแสดงให้เห็นว่ามีการเพิ่มขึ้นหรือลดลงในการทำซ้ำแต่ละครั้ง หรือ a ที่สามารถแสดงให้เห็นว่ากำลังเพิ่มขึ้นหรือลดลงหลังจากการทำซ้ำ "บางอย่าง" มากกว่า 1k = 1
— shn

1
@shn ฉันไม่แน่ใจว่าทำไมคุณถึงวิจารณ์การเลือกใช้เทคนิคการพิสูจน์ของคนที่ประสบความสำเร็จในการแก้ปัญหาของคุณมากกว่าที่คุณมี โดยเฉพาะอย่างยิ่งเมื่อคำถามของคุณแสดงความพยายามที่ล้มเหลวสี่ครั้งโดยใช้เทคนิคที่คุณต้องการ
— David Richerby

1
@DavidRicherby ฉันไม่ได้วิจารณ์;) ฉันได้พูดคุยเกี่ยวกับการแก้ปัญหาด้วย "causative" (ผู้ที่ให้คำตอบนี้) กับ IRC และเราพบว่ามันเป็นไปไม่ได้ที่จะพิสูจน์ด้วยวิธีนี้สำหรับ ; ดังนั้นเราจึงอนุมานได้ว่ามันจะดีกว่ามากถ้าเราสามารถหาฟังก์ชั่นที่มีศักยภาพซึ่งสามารถแสดงให้ลดลงในการทำซ้ำแต่ละครั้ง ความคิดเห็นของฉันเป็นเพียงข้อมูล k > 1
— shn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.