বিএফএস / ডিএফএস ব্যবহার করে গাছের ব্যাস খুঁজতে আলগোরিদম। কেন এটি কাজ করে?


28

এই লিঙ্কটি বিএফএস / ডিএফএস ব্যবহার করে কোনও পুনর্নির্দেশিত গাছের ব্যাস সন্ধানের জন্য একটি অ্যালগরিদম সরবরাহ করে । সারমর্ম:

গ্রাফের যে কোনও নোডে বিএফএস চালান, আপনি সর্বশেষে আবিষ্কার করেছেন নোডটি মনে করে। সর্বশেষে আবিষ্কার হওয়া নোডের কথা মনে করে আপনার বিএফএস চালান। d (u, v) গাছের ব্যাস।

কেন এটি কাজ করে?

পৃষ্ঠা 2 এই একটি যুক্তি প্রদান করে, কিন্তু এটা বিভ্রান্তিকর। আমি প্রমাণের প্রাথমিক অংশটি উদ্ধৃত করছি:

গ্রাফের যে কোনও নোডে বিএফএস চালান, আপনি সর্বশেষে আবিষ্কার করেছেন নোডটি মনে করে। সর্বশেষে আবিষ্কার হওয়া নোডের কথা মনে করে আপনার বিএফএস চালান। d (u, v) গাছের ব্যাস।

সঠিকতা: যাক a এবং b এর যে কোনও দুটি নোড হওয়া যাক যে d (a, b) গাছের ব্যাস। ক থেকে বি পর্যন্ত একটি অনন্য পথ রয়েছে। বিএফএস দ্বারা আবিষ্কার করা সেই পথে প্রথম নোড হওয়া যাক। পাথ তাহলে তোমার দর্শন লগ করা এবং s থেকে A থেকে B অবধি ভাগ প্রান্ত না, তারপর তোমার দর্শন লগ করা টন থেকে পাথ গুলি অন্তর্ভুক্ত করা হয়েছে। সুতরাংp1p2

d(t,u)d(s,u)

d(t,u)d(s,a)

.... (আরও বৈষম্য অনুসরণ করে ..)

অসম্পূর্ণতা আমার কাছে বোঝায় না।


সংযুক্ত প্রশ্নের মধ্যে উদ্ধৃতিটি খুঁজে পাচ্ছি না।
রাফেল

1
সমাধানে "প্রান্তগুলি ভাগ করবেন না" এর সাথে প্রতিস্থাপনের চেষ্টা করুন।
ইয়ুভাল ফিল্মাস

আপনি কেবল বিএফএস ব্যবহার করছেন, ডিএফএস নয়।
থাম্বনেইল

উত্তর:


11

অনর্থক প্রান্তযুক্ত গাছের 2 গুরুত্বপূর্ণ সংস্থার উপর দাবী প্রমাণ করার সমস্ত অংশ:

  • 1-সংযুক্তি (যেমন গাছের যে কোনও 2 টি নোডের মধ্যে হুবহু এক পথ রয়েছে)
  • যে কোনও নোড গাছের মূল হিসাবে কাজ করতে পারে।

চয়ন করুন একটি অবাধ গাছ নোড । ধরুন, ইউ , ভি ভি ( জি ) হ'ল ডি ( ইউ , ভি ) = ডি আই এম ( জি ) সহ নোড । আরও শর্ত থাকে যে অ্যালগরিদম খুঁজে বের করে একটি নোড ধরে x থেকে শুরু গুলি প্রথম, কিছু নোড Y থেকে শুরু এক্স পরবর্তী। wlog d ( s , u ) d ( s , v ) । মনে রাখবেন যেsu,vV(G)d(u,v)=diam(G)xsyxd(s,u)d(s,v) অবশ্যই ধরে রাখতে হবে, যদি না অ্যালগরিদমের প্রথম স্তরটি x এ শেষ না হয়। আমরা সেই ডি ( x , y ) = ডি ( ইউ , ভি ) দেখতে পাব।d(s,x)d(s,y)xd(x,y)=d(u,v)

জড়িত সমস্ত নোডের সর্বাধিক সাধারণ কনফিগারেশনটি নিম্নলিখিত সিউডো-গ্রাফিকগুলিতে দেখা যেতে পারে (সম্ভবত বা s = z x y বা উভয়):s=zuvs=zxy

(u)                                            (x)
  \                                            /
   \                                          /
    \                                        /
     ( z_uv )---------( s )----------( z_xy )
    /                                        \
   /                                          \
  /                                            \
(v)                                            (y)

আমরা জানি যে:

  1. । অন্যথায় d ( u , v ) < d i a m ( G ) অনুমানের সাথে বিরোধী।d(zuv,y)d(zuv,v)d(u,v)<diam(G)
  2. । অন্যথায় d ( u , v ) < d i a m ( G ) অনুমানের সাথে বিরোধী।d(zuv,x)d(zuv,u)d(u,v)<diam(G)
  3. , অন্যথায় অ্যালগরিদমের প্রথম স্তর x থামত না(গুলি,z- রএক্সY)+ +(z- রএক্সY,এক্স)(গুলি,z- রতোমার দর্শন লগ করাবনাম)+ +(z- রতোমার দর্শন লগ করাবনাম,তোমার দর্শন লগ করা)এক্স
  4. , অন্যথায় অ্যালগরিদমের দ্বিতীয় পর্যায়ে y এ থামেনি।(z- রএক্সY,Y)(বনাম,z- রতোমার দর্শন লগ করাবনাম)+ +(z- রতোমার দর্শন লগ করাবনাম,z- রএক্সY)Y

1) এবং 2) বোঝা d(u,v)=d(zuv,v)+d(zuv,u)d(zuv,x)+d(zuv,y)=d(x,y)+2d(zuv,zxy)d(x,y)

3) এবং 4) বোঝা d(zxY,Y)+ +(গুলি,z- রএক্সY)+ +(z- রএক্সY,এক্স)(গুলি,z- রতোমার দর্শন লগ করাবনাম)+ +(z- রতোমার দর্শন লগ করাবনাম,তোমার দর্শন লগ করা)+ +(বনাম,z- রতোমার দর্শন লগ করাবনাম)+ +(z- রতোমার দর্শন লগ করাবনাম,z- রএক্সY) সমতুল্য d(x,y)=d(zxy,y)+d(zxy,x)2d(s,zuv)+d(v,zuv)+d(u,zuv)d(u,v)

অতএব d(u,v)=(এক্স,Y)

অ্যানালগ প্রুফ বিকল্প কনফিগারেশন জন্য রাখা

                 (u)                          (x)
                   \                          /
                    \                        /
                     \                      /
     ( s )---------( z_uv )----------( z_xy )
                     /                      \
                    /                        \
                   /                          \
                 (v)                          (y)

এবং

                          (x)        (u)  
                          /            \  
                         /              \ 
                        /                \
     ( s )---------( z_xy )----------( z_uv )
                        \                /          
                         \              /           
                          \            /            
                          (y)        (v)            

এগুলি সমস্ত সম্ভাব্য কনফিগারেশন। বিশেষত, কারণে অ্যালগোরিদমের প্রথম ধাপ 1 এবং y p a t h ( x , u ) , y Stage p a t h ( x , v ) পর্যায় 2 এর কারণে।এক্সপিএকটিটি(গুলি,তোমার দর্শন লগ করা),এক্সপিএকটিটি(গুলি,বনাম)ypath(x,u),ypath(x,v)


(1) প্রথম গ্রাফিকের বিষয়ে, বিএসএফ দ্বারা উত্পাদিত গাছের গায়ে উপস্থিত থাকার কারণে এস থেকে এক্স পর্যন্ত সর্বদা পথটি সর্বদা u এবং vকে কিছু ক্রমযুক্ত করে রাখা উচিত নয়? (২) কীভাবে বৈষম্যগুলি প্রাপ্ত হয় তা আপনি ব্যাখ্যা করতে পারেন? (3) যেহেতু বিএফএস থেকে শুরু হয় এবং যেটি এক্স থেকে শুরু করে আপনি কোথাও কোথাও রয়েছে, আমি বিশ্বাস করি গ্রাফিকটি লিঙ্কটি ইমগুর . com/jQ94erY তে দেখানো উচিত । আপনার দেওয়া যুক্তিটি এখানে কীভাবে প্রযোজ্য?
কারিগেজ

@ ক্রয়েরেজ নোট যে গাছটি দেওয়া হয়েছে এবং বিএফএস দ্বারা নির্মিত হচ্ছে না! নির্দিষ্ট উত্তর: বিজ্ঞাপন 1) না। কিনারায় ইচ্ছামত অনেক নোড যোগ করে গ্রাফিক্স (1) গাছের একটি পরিশোধন কল্পনা এবং ঠিক 1 নোড কিনারায় ( z- র এক্স Y , এক্স ) । প্রথম পর্যায়ে bfs এর পরে x এ শেষ হবে। বিজ্ঞাপন 2) কোন অসমতা / আইস অস্পষ্ট? আমরা সর্বদা ধরে নিচ্ছি যে ( ইউ , ভি ) গ্রাফের ব্যাসের দৈর্ঘ্যের একটি পথ হবে d i a g ( G )(s,zxy)(zxy,x)(u,v)diag(G)। এটি 1-সংযুক্ত হিসাবে ভাল সংজ্ঞায়িত। বিজ্ঞাপন 3) না: 3.1 বাদে যে কোনও 2 টি নোডের মধ্যে 1 টিরও বেশি পাথ রয়েছে , সুতরাং গ্রাফটি গাছ নয়। ...(s,y)
কলস্পার

@ ক্র্যারেজ ... ৩.২ ; অনুমান দ্বারা এটি d ( u , v ) = d i a m ( G ) হিসাবে অসম্ভব এবং গ্রাফের ব্যাস হ'ল যে কোনও দুটি নোডের মধ্যে সর্বাধিক ন্যূনতম দূরত্ব। গাছের ক্ষেত্রে যে কোনও 2 নোডের মধ্যে ঠিক 1 টি পথ থাকে, সুতরাং সংজ্ঞাটি 'কোনও দুটি নোডের মধ্যে সর্বাধিক দূরত্ব' এ হ্রাস পায়। d(x,y)>d(u,v)d(u,v)=diam(G)
কলস্পার

9

পিছনে স্বজ্ঞাত বুঝতে খুব সহজ। মনে করুন প্রদত্ত গাছে দুটি নোডের মধ্যে বিদ্যমান দীর্ঘতম পথটি আমাকে খুঁজে পেতে হবে।

কিছু চিত্র আঁকার পরে আমরা পর্যবেক্ষণ করতে পারি যে দীর্ঘতম পথটি সর্বদা দুটি পাতার নোডের (যেখানে কেবল একটি প্রান্তের সাথে যুক্ত থাকে) এর মধ্যে দেখা যায়। এটি দ্বন্দ্বের দ্বারা প্রমাণিতও হতে পারে যে দীর্ঘতম পথটি যদি দুটি নোডের মধ্যে হয় এবং দুটি বা দুটি নোডের মধ্যে যদি কোনও পাতা নোড না হয় তবে আমরা আরও দীর্ঘ পথ পাওয়ার জন্য পথটি প্রসারিত করতে পারি।

সুতরাং একটি উপায় হ'ল লিফ নোডগুলি কী তা প্রথমে যাচাই করা, তারপরে নোডটি দূরের পেতে লিফ নোডের একটি থেকে বিএফএস শুরু করুন।

প্রথমে কোন নোডগুলি লিফ নোড তা আবিষ্কার করার পরিবর্তে, আমরা একটি এলোমেলো নোড থেকে বিএফএস শুরু করি এবং তারপরে দেখুন কোন নোডটি এটি থেকে সবচেয়ে দূরে। নোডটি সর্বাধিক এক্স হতে দিন। এটি পরিষ্কার যে এক্স একটি পাতার নোড। এখন যদি আমরা এক্স থেকে বিএফএস শুরু করি এবং এটি থেকে দীর্ঘতম নোড পরীক্ষা করি তবে আমরা আমাদের উত্তর পাব।

তবে গ্যারান্টিটি কী যে এক্স সর্বাধিক পথের একটি শেষ পয়েন্ট হবে?

আসুন একটি উদাহরণ দিয়ে দেখুন: -

       1   
    / /\ \
   6 2  4 8
         \ \
          5 9
           \
            7

ধরুন আমি 6 থেকে আমার বিএফএস শুরু করেছি 6 থেকে সর্বাধিক দূরত্বে নোডটি নোড 7 বিএফএস ব্যবহার করে আমরা এই নোডটি পেতে পারি। এখন আমরা নোড 7 থেকে বিএফএসকে সর্বোচ্চ দূরত্বে নোড 9 পেতে তারকাচিহ্নিত করি। নোড 7 থেকে নোড 9 পর্যন্ত পাথ স্পষ্টতই দীর্ঘতম পথ।

নোড from থেকে শুরু হওয়া বিএফএস যদি সর্বোচ্চ দূরত্বে নোড হিসাবে 2 দেয় gave তারপরে যখন আমরা 2 থেকে বিএফএস করব আমরা সর্বাধিক দূরত্বে নোড হিসাবে 7 পাব এবং দীর্ঘতম পাথ তখন 2-> 1-> 4-> 5-> 7 দৈর্ঘ্য সহ 4 হবে তবে প্রকৃততম দীর্ঘতম পাথ দৈর্ঘ্য 5 এটি পারবেন না ঘটবে কারণ নোড 6 থেকে বিএফএস কখনও কখনও সর্বোচ্চ নোড হিসাবে নোড 2 দেয় না।

আশা করি এইটি কাজ করবে.


1
একটি সহজ এবং পরিষ্কার ব্যাখ্যা thats! ধন্যবাদ :)
অ্যানিক্স

4

মূল প্রশ্নের সাথে আরও ঘনিষ্ঠভাবে লিঙ্কিত এমআইটি সমাধান সেট অনুসরণ করে এমন একটি প্রমাণ এখানে দেওয়া হয়েছে। স্পষ্টতার জন্য, আমি তাদের ব্যবহার একই নোটেশনটি ব্যবহার করব যাতে তুলনাটি আরও সহজে করা যায়।

ধরুন আমাদের এবং b এর দুটি লম্ব আছে যে পথ পি ( a , b ) এর উপর a এবং b এর মধ্যকার দূরত্ব একটি ব্যাস, যেমন দূরত্ব d ( a , b ) গাছের যে কোনও দুটি বিন্দুর মধ্যে সর্বোচ্চ সম্ভাব্য দূরত্ব। ধরুন আমরা একটি নোড আছে গুলি একটি , (যদি গুলি = একটি , তাহলে এটি সুস্পষ্ট হতে হবে স্কিম কাজ, প্রথম এই বি যেহেতু পাবে , সেকেন্ডকে ফিরে আসতে হবে)। মনে করুন যে আমাদের একটি নোড আছেababp(a,b)d(a,b)sa,bs=ab such that d ( s , u ) = সর্বাধিক এক্স ডি ( গুলি , এক্স )ud(s,u)=maxxd(s,x)

লেমা 0: এবং b উভয়ই পাতার নোড।ab

প্রমাণ: যদি তারা গাছের পাতা নোড ছিল না, আমরা বাড়তে পারে , গাছের পাতা নোড এন্ড পয়েন্ট ব্যাপ্ত contradicting দ্বারা ( একটি , ) একটি ব্যাস হচ্ছে।d(a,b)d(a,b)

লেমা 1: max[d(s,a),d(s,b)]=d(s,u)

প্রমাণ: ধরুন দ্বন্দ্বের জন্য যে উভয় এবং ডি ( গুলি , বি ) কঠোরভাবে ডি ( গুলি , ইউ ) এর চেয়ে কম ছিল । আমরা দুটি ক্ষেত্রে তাকান:d(s,a)d(s,b)d(s,u)

কেস 1: পাথ নেই না প্রান্তবিন্দু ধারণ গুলি । এই ক্ষেত্রে, d ( a , b ) ব্যাস হতে পারে না। কেন দেখতে, দিন টি উপর অনন্য প্রান্তবিন্দু হতে পি ( একটি , ) থেকে ক্ষুদ্রতম দূরত্ব সঙ্গে গুলি । তারপরে, আমরা দেখতে পাই যে d ( a , u ) = d ( a , t ) + d ( t , s)p(a,b)sd(a,b)tp(a,b)sd(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b), since d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b). Similarly, we would also have d(b,u)>d(a,b). This contradicts d(a,b) being a diameter.

কেস 2: পাথ প্রান্তবিন্দু রয়েছে গুলি । এই ক্ষেত্রে, ( একটি , ) আবার না ব্যাস, হতে পারে যেহেতু কিছু প্রান্তবিন্দু জন্য U যেমন যে ( গুলি , U ) = সর্বোচ্চ এক্স( গুলি , এক্স ) , উভয় ( একটি , U ) এবং ( , u ) d এর চেয়ে বড় হবেp(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)

uusuvd(s,v)=d(s,u), then we know that the diameter is d(a,b)=2d(s,u), and it doesn't matter whether we start the second BFS at u or v.


Awesome. Thanks for posting this answer. I am surprised that this answer didn't receive any upvotes.
Zephyr

0

First run a DFS from a random node then the diameter of a tree is the path between the deepest leaves of a node in its DFS subtree: enter image description here


4
Why does this work?
Yuval Filmus

0

By the definition of BFS, the distance (from the starting node) of each node explored is either equal to the distance of the previous node explored or greater by 1. Thus, the last node explored by BFS will be among those farthest from the starting node.

Thus, the algorithm of using BFS twice amounts to "Pick an arbitrary node x. Find the node a farthest from x (last node found by BFS starting from x). Find the node b farthest from a (last node found by BFS starting from a).", which thus finds two nodes of maximum distance from eachother.


1
Thanks for the answer with the intuition. However, the "thus" in the your last sentence is not obvious. Why does that follow? Why does the node farthest from x have to be one of the two nodes at maximum distance from each other? It seems like that needs some proof.
D.W.

I'm not sure how to construct such a proof. I feel like the converse is intuitively true: if two nodes are at maximum distance from each other, then, for any given node, one of the two is at the greatest possible distance from it.
Extrarius

The "intuitively true" claim isn't true in general for general graphs. See the graph in cs.stackexchange.com/a/213/755, and imagine starting the BFS from node v (i.e., let x=v); then it will pick a=u and find the node b at greatest distance from a, but that doesn't find the two nodes of maximum distance from each other. So the claimed statement, if true, must rely on some special property of trees that doesn't hold for general graphs.
D.W.

Yes, but this question specifies undirected trees, which is the context I'm intuiting in. Barring cycles and directed edges makes many graph problems significantly simpler to reason about.
Extrarius

0

একটি মূল বিষয় জানতে হবে যে একটি গাছ সর্বদা পরিকল্পনাকারী হয় যার অর্থ এটি একটি সমতলতে রাখা যায়, তাই প্রায়শই সাধারণ দ্বিমাত্রিক চিন্তাভাবনা কাজ করে। এই ক্ষেত্রে, অ্যালগরিদমটি যে কোনও জায়গায় থেকে শুরু করে বলে, আপনি যতদূর যেতে পারেন। সেই বিন্দু থেকে আপনি যতদূর দূরে যেতে পারেন তার দূরত্বটি গাছের দীর্ঘতম দূরত্ব এবং তাই ব্যাস।

এই পদ্ধতিটি বাস্তব, দৈহিক দ্বীপের ব্যাস সন্ধান করতেও কাজ করবে যদি আমরা নির্ধারণ করি যে এই ক্ষুদ্রতম বৃত্তের ব্যাস হিসাবে এই দ্বীপটি পুরোপুরি ঘিরে থাকবে।


0

@op, the way the cases are defined in the PDF may be a bit off.

I think that the two cases should be:

  1. p1 does not intersect with p2, i.e. there are no common vertices between paths p1 and p2. In this case, define t as the first node on p2 discovered by the first BFS starting at s.

  2. p1 and p2 have at least one common vertex. In this case, define t to be the first node on p2 discovered by the first BFS that is also on p1.

The rest of the proof in the PDF should follow.

With this definition, the figure shown by OP falls into Case 2.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.