นี่เป็นข้อพิสูจน์ที่เป็นไปตามชุดโซลูชั่น MIT ที่เชื่อมโยงกับคำถามเดิมอย่างใกล้ชิดยิ่งขึ้น เพื่อความชัดเจนฉันจะใช้สัญลักษณ์เดียวกับที่ใช้เพื่อการเปรียบเทียบสามารถทำได้ง่ายขึ้น
สมมติว่าเรามีจุดยอดสองจุดและbเพื่อให้ระยะห่างระหว่างaและbบนเส้นทางp ( a , b )เป็นเส้นผ่านศูนย์กลางเช่นระยะทางd ( a , b )เป็นระยะทางสูงสุดระหว่างจุดสองจุดใด ๆ ในต้นไม้ สมมติว่าเรามีโหนดs ≠ a , b (ถ้าs = aดังนั้นจะเห็นได้ชัดว่ารูปแบบการทำงานเนื่องจาก BFS แรกจะได้รับbและที่สองจะกลับไป a) สมมติว่าเรามีโหนดaขaขp ( a , b )d( a , b )s ≠ a , bs = aขดังกล่าวว่า d ( s , U ) = สูงสุดx d ( s , x )ยูd( s , u ) = สูงสุดxd( s , x )
เล็มม่า 0: ทั้งและbเป็นโหนดลีฟaข
การพิสูจน์: หากพวกเขาไม่ได้เป็นโหนดใบเราสามารถเพิ่มโดยการขยายจุดปลายไปยังโหนดใบตรงกันข้ามกับd ( a , b )เป็นเส้นผ่านศูนย์กลางd( a , b )d( a , b )
แทรก 1: )สูงสุด[ d( s , a ) , d( s , b ) ] = d( s , u )
พิสูจน์: สมมติว่าเพื่อประโยชน์ของความขัดแย้งว่าทั้งและd ( s , B )อย่างเคร่งครัดน้อยกว่าd ( s , U ) เราดูสองกรณี:d(s,a)d(s,b)d(s,u)
กรณีที่ 1: เส้นทางไม่ได้มีจุดสุดยอดของ ในกรณีนี้d ( a , b )ต้องไม่เป็นเส้นผ่านศูนย์กลาง เพื่อดูว่าทำไมปล่อยให้เสื้อเป็นจุดสุดยอดไม่ซ้ำกันในพี( , ข)กับระยะทางที่เล็กที่สุดs จากนั้นเราจะเห็นว่าd ( a , u ) = d ( a , t ) + d ( t , sp(a,b)sd(a,b)tp(a,b)s , ตั้งแต่ d ( s , u ) > d ( s , b ) = d ( s , t ) + d ( t , b ) > d (d(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b) ) ในทำนองเดียวกันเราก็จะมี d ( ข, U ) > d ( , B ) สิ่งนี้ขัดแย้งกับ d ( a , b )เป็นเส้นผ่านศูนย์กลางd(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b)d(b,u)>d(a,b)d(a,b)
กรณีที่ 2: เส้นทางมีจุดสุดยอดของ ในกรณีนี้d ( , ข)อีกครั้งไม่สามารถเส้นผ่าศูนย์กลางตั้งแต่จุดสุดยอดบางยูดังกล่าวว่าd ( s , U ) = สูงสุดx d ( s , x )ทั้งd ( , U )และD ( ข, u )จะมากกว่าdp(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u) )d(a,b)
แทรก 1 ให้เหตุผลว่าทำไมเราเริ่มต้นการค้นหาในแนวกว้างสองที่ผ่านมาค้นพบจุดสุดยอดของ BFS แรก ถ้ามึงเป็นจุดสุดยอดที่ไม่ซ้ำกับระยะทางที่เป็นไปได้มากที่สุดจากsแล้วโดยบทแทรก 1 มันจะต้องเป็นหนึ่งในปลายทางของเส้นทางที่มีระยะทางบางเท่ากับเส้นผ่าศูนย์กลางและด้วยเหตุนี้ BFS สองกับยูเป็นรากอย่างไม่น่าสงสัยพบ เส้นผ่าศูนย์กลาง ในทางกลับกันถ้าอย่างน้อยหนึ่งจุดยอดvอื่นที่d ( s , v ) = d ( s , u ) , จากนั้นเรารู้ว่าเส้นผ่านศูนย์กลางเป็นduusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv