কেন গ্রাফিকের মধ্যে চক্র সন্ধানের জন্য ডিএফএস এবং বিএফএস নয়


86

মূলত ডিএফএস বিএফএস নয়, গ্রাফগুলিতে একটি চক্র অনুসন্ধান করতে ব্যবহৃত হয়। কোন কারণ? গাছ / গ্রাফ অতিক্রমের সময় কোনও নোড ইতিমধ্যে পরিদর্শন করা হয়েছে কিনা তা উভয়ই দেখতে পাবেন can


4
নির্দেশিত গ্রাফগুলিতে, কেবলমাত্র ডিএফএস একটি চক্র সনাক্ত করতে ব্যবহার করা যেতে পারে; তবে পুনর্নির্দেশিত গ্রাফগুলিতে উভয়ই ব্যবহার করা যেতে পারে।
হেনগামেহ

উত্তর:


74

আপনি যত তাড়াতাড়ি ব্যাকট্র্যাক করতে পারেন গভীরতার প্রথম অনুসন্ধান প্রস্থের প্রথম অনুসন্ধানের চেয়ে বেশি মেমরির দক্ষ। আপনি যদি কল স্ট্যাক ব্যবহার করেন তবে এটি কার্যকর করাও সহজ তবে এটি স্ট্যাককে উপচে না ফেলে দীর্ঘতম পথে নির্ভর করে।

এছাড়াও যদি আপনার গ্রাফটি নির্দেশিত হয় তবে আপনি কেবল কোনও নোডে গিয়েছেন কিনা তা আপনাকে কেবল মনে রাখতে হবে না, তবে আপনি কীভাবে সেখানে গিয়েছিলেন তাও আপনাকে মনে করতে হবে না। অন্যথায় আপনি ভাবতে পারেন যে আপনি একটি চক্র পেয়েছেন কিন্তু বাস্তবে আপনার সমস্ত দুটি পৃথক পাথ A-> B তবে এর অর্থ এই নয় যে সেখানে একটি পথ রয়েছে B-> A। উদাহরণ স্বরূপ,

আপনি যদি শুরু থেকে বিএফএস করেন তবে 0এটি চক্রটি উপস্থিত হিসাবে সনাক্ত করবে তবে বাস্তবে কোনও চক্র নেই।

গভীরতার সাথে প্রথম অনুসন্ধানের মাধ্যমে আপনি নীচে নেমে যাবার সময় নোডগুলি চিহ্নিত করতে পারেন এবং ব্যাকট্র্যাক হিসাবে সেগুলি চিহ্নমুক্ত করতে পারেন। এই অ্যালগরিদমের উপর পারফরম্যান্স উন্নতির জন্য মন্তব্যগুলি দেখুন।

জন্য একটি নির্দেশ গ্রাফে চক্র সনাক্ত জন্য শ্রেষ্ঠ অ্যালগরিদম আপনি তাকান পারে Tarjan এর এলগরিদম


4
(স্মৃতিশক্তি দক্ষ কারণ আপনি তাড়াতাড়ি ব্যাকট্র্যাক করতে পারেন এবং কার্যকর করা সহজ কারণ আপনি কেবল স্ট্যাকটিকে স্পষ্টভাবে বজায় রাখার পরিবর্তে খোলার তালিকা সংরক্ষণ করার যত্ন নিতে পারেন))
অ্যাম্বার

4
আইএমও, আপনি যদি লেজ পুনরাবৃত্তির উপর নির্ভর করতে পারেন তবে এটি কেবল সহজ।
হ্যাঙ্ক গে

4
"আপনার ব্যাকট্র্যাক হিসাবে এগুলি চিহ্নিত করুন" - আপনার নিজের বিপদে! এটি সহজেই O (n ^ 2) আচরণের দিকে পরিচালিত করতে পারে, বিশেষত এই জাতীয় ডিএফএস ক্রস প্রান্তকে "ট্রি" প্রান্ত হিসাবে ভুল বোঝাবে ("ট্রি" প্রান্তগুলিও ভুল হিসাবে গণ্য হবে যেহেতু তারা আসলে আর গাছ তৈরি করে না)
দিমিত্রিস অ্যান্ড্রু

4
@ ডিমিট্রিস আন্ড্রেও: আপনি পারফরম্যান্সের উন্নতির জন্য দুটি পরিবর্তে তিনটি পরিদর্শন করা রাজ্য ব্যবহার করতে পারেন। নির্দেশিত গ্রাফের সাথে 'আমি এই নোডটি আগে দেখেছি' এবং 'এই নোডটি একটি লুপের অংশ' এর মধ্যে পার্থক্য রয়েছে। পুনর্নির্দেশিত গ্রাফ সহ তারা সমান।
মার্ক বাইয়ার্স

হুবহু, আপনার অবশ্যই একটি তৃতীয় রাষ্ট্রের প্রয়োজন (অ্যালগোরিদমকে রৈখিক করতে), সুতরাং আপনার সেই অংশটি সংশোধন করার বিষয়টি বিবেচনা করা উচিত।
দিমিত্রিস অ্যান্ড্রু

28
  1. ডিএফএস কার্যকর করা সহজ
  2. ডিএফএস একবার একটি চক্রটি সন্ধান করলে স্ট্যাকের মধ্যে চক্র গঠনকারী নোডগুলি থাকবে। বিএফএসের ক্ষেত্রেও এটি সত্য নয়, সুতরাং যদি আপনি পাওয়া চক্রটিও মুদ্রণ করতে চান তবে আপনাকে অতিরিক্ত কাজ করতে হবে। এটি ডিএফএসকে অনেক বেশি সুবিধাজনক করে তুলেছে।

11

গ্রাফটি যদি পুনঃনির্দেশিত হয় তবে একটি বিএফএস যুক্তিসঙ্গত হতে পারে (বিএফএস ব্যবহার করে দক্ষ অ্যালগরিদম দেখানোর ক্ষেত্রে আমার অতিথি হোন যা নির্দেশিত গ্রাফের চক্রের প্রতিবেদন করবে!) যেখানে প্রতিটি "ক্রস এজ" একটি চক্রকে সংজ্ঞায়িত করে। যদি ক্রস প্রান্তটি হয় {v1, v2}এবং মূল (বিএফএস গাছের মধ্যে) যে নোডগুলি থাকে rতবে চক্রটি r ~ v1 - v2 ~ r( ~একটি পথ, -একটি একক প্রান্ত), যা ডিএফএসের মতো প্রায় সহজেই রিপোর্ট করা যায়।

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

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


4

বিএফএস চক্র সন্ধানে নির্দেশিত গ্রাফের জন্য কাজ করবে না। A-> B এবং A-> C-> B কে গ্রাফের A থেকে B যাওয়ার পথ হিসাবে বিবেচনা করুন। বিএফএস বলবে যে বি পরিদর্শন করা হয়েছে তার একটি পথ ধরে যাওয়ার পরে। পরবর্তী পথে ভ্রমণ চালিয়ে যাওয়ার সময় এটি বলবে যে চিহ্নিত নোড বি আবার পাওয়া গেছে, সুতরাং, একটি চক্র রয়েছে। স্পষ্টতই এখানে কোনও চক্র নেই।


আপনি কী ব্যাখ্যা করতে পারবেন যে ডিএফএস কীভাবে স্পষ্টভাবে সনাক্ত করতে পারে যে আপনার চক্রটি আপনার উদাহরণে বিদ্যমান নেই I আমি সম্মত হন যে প্রদত্ত উদাহরণে চক্রটির অস্তিত্ব নেই ut তবে আমরা যদি A-> B থেকে যান এবং তবে A-> সি-> বি পাবেন আমরা বিটি ইতিমধ্যে পরিদর্শন করা হয়েছিল এবং এর পিতামাতা হ'ল সি নয় .. এবং আমি পড়েছি যে ডিএফএস ইতিমধ্যে পরিদর্শন করা উপাদানটির পিতামাতার সাথে বর্তমান নোডের সাথে তুলনা করে চক্রটি সনাক্ত করবে যা আমরা এই মুহুর্তে পরীক্ষা করছি am আমি ডিএফএস ভুল পেয়েছি বা কি?
স্মারক

আপনি এখানে যা দেখিয়েছেন তা হ'ল এই নির্দিষ্ট প্রয়োগটি কার্যকর হয় না, এটি BFS দ্বারা অসম্ভব নয়। বস্তুত, এটা হল সম্ভব, যদিও এটি আরো কাজ এবং স্থান নেয়।
খেজুর

@ প্রোনি: এখানে সমস্ত থ্রেড (আমার মনে হয়) প্রমাণ করার চেষ্টা করছে যে বিএফএস চক্র সনাক্ত করার জন্য কাজ করবে না। আপনি যদি প্রমাণ করতে পারেন কীভাবে প্রমাণ করতে হয় তবে আপনার প্রমাণ দেওয়া উচিত। সহজভাবে বলছি যে প্রচেষ্টা বৃহত্তর পর্যাপ্ত হয় না
আদিত্য রমন

যেহেতু লিঙ্কযুক্ত পোস্টগুলিতে অ্যালগরিদম দেওয়া হয়, তাই আমি এখানে রূপরেখার পুনরাবৃত্তি করা উপযুক্ত মনে করি না।
খেজুর

আমি কোনও লিঙ্কযুক্ত পোস্টগুলি খুঁজে পাইনি, তাই এটির জন্য অনুরোধ জানিয়েছিলাম। আমি বিএফএস এর সামর্থ্য সম্পর্কে আপনার মতামতের সাথে একমত এবং কেবল বাস্তবায়ন সম্পর্কে চিন্তাভাবনা করেছি। টিপটির জন্য ধন্যবাদ :)
আদিত্য রমন

4

আমি জানি না কেন এমন পুরাতন প্রশ্নটি আমার ফিডে উঠল, তবে পূর্ববর্তী সমস্ত উত্তর খারাপ, তাই ...

নির্দেশিত গ্রাফগুলিতে চক্র খুঁজতে ডিএফএস ব্যবহার করা হয়, কারণ এটি কাজ করে

একটি ডিএফএসে, প্রতিটি শীর্ষবিন্দুটি "পরিদর্শন করা হয়", যেখানে একটি শীর্ষবিন্দু দেখার অর্থ:

  1. শীর্ষস্থানটি শুরু হয়েছে
  2. সেই শীর্ষবিন্দু থেকে পৌঁছনীয় সাবগ্রাফারটি পরিদর্শন করা হয়েছে। এর মধ্যে এমন সমস্ত চিহ্নহীন প্রান্তগুলি চিহ্নিত করা রয়েছে যা সেই শীর্ষবিন্দু থেকে পৌঁছতে পারে এবং সমস্ত অ্যাক্সেসযোগ্য অপ্রকাশিত শীর্ষদিকগুলি ঘুরে দেখা যায়।

  3. শীর্ষবিন্দু সমাপ্ত।

সমালোচনামূলক বৈশিষ্ট্যটি হ'ল শীর্ষবিন্দু থেকে সমস্তটি প্রান্তটি ভার্টেক্স শেষ হওয়ার আগে চিহ্নিত করা যায়। এটি ডিএফএসের একটি বৈশিষ্ট্য, তবে বিএফএসের নয়। আসলে এটি ডিএফএসের সংজ্ঞা।

এই বৈশিষ্ট্যের কারণে, আমরা জানি যে যখন একটি চক্রের প্রথম শীর্ষটি শুরু হয়:

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

সুতরাং, যদি কোনও চক্র থাকে, তবে আমরা একটি সূচিত-তবে-অসম্পূর্ণ ভার্টেক্স (2) এর একটি কিনারা পাওয়ার গ্যারান্টিযুক্ত এবং যদি আমরা এইরকম প্রান্ত পাই তবে আমাদের গ্যারান্টি দেওয়া আছে যে একটি চক্র রয়েছে (3)।

এজন্য ডিএফএস নির্দেশিত গ্রাফগুলিতে চক্র সন্ধান করতে ব্যবহৃত হয়।

বিএফএস এরকম কোনও গ্যারান্টি দেয় না, সুতরাং এটি কার্যকর হয় না। (পুরোপুরি ভাল চক্র-সন্ধানের আলগোরিদিমগুলিতে বিএফএস অন্তর্ভুক্ত বা উপ-প্রক্রিয়া হিসাবে অনুরূপ)

অন্যদিকে, একটি অপরিবর্তিত গ্রাফের একটি চক্র থাকে যখনই যেকোন জোড়ের ভার্টেক্সগুলির মধ্যে দুটি পথ থাকে, যেমন, যখন এটি গাছ না হয়। বিএফএস বা ডিএফএস উভয়ের মধ্যে এটি সনাক্ত করা সহজ - নতুন ভারটিক্সে চিহ্নিত প্রান্তগুলি একটি গাছ গঠন করে এবং অন্য কোনও প্রান্তটি একটি চক্রকে নির্দেশ করে।


প্রকৃতপক্ষে, এখানে প্রকৃত কারণগুলির সাথে ব্যাখ্যা করে এটিই সর্বাধিক (সম্ভবত একমাত্র) সম্পর্কিত উত্তর।
প্লাজম্যাসেল

2

আপনি যদি একটি গাছের এলোমেলো জায়গায় একটি চক্র স্থাপন করেন, ডিএফএস যখন প্রায় অর্ধেক গাছ আচ্ছাদিত হয় তখন চক্রটিকে আঘাত করতে পারে এবং চক্রটি যেখানে যায় সেখানে অর্ধেক সময় ইতিমধ্যে এটি পেরিয়ে যায়, এবং অর্ধেক সময় এটি হবে না ( এবং এটি গাছের অর্ধেকের মধ্যে গড়ে খুঁজে পাবেন), সুতরাং এটি গাছের গড় প্রায় 0.5 * 0.5 + 0.5 * 0.75 = 0.625 মূল্যায়ন করবে।

আপনি যদি একটি গাছের এলোমেলো স্থানে একটি চক্র স্থাপন করেন, বিএফএস কেবল তখনই চক্রটিকে আঘাত করবে যখন এটি গভীরতার সাথে গাছের স্তরটি মূল্যায়ন করবে। সুতরাং, আপনি সাধারণত একটি ভারসাম্য বাইনারি গাছের পাতাগুলি মূল্যায়ন করে শেষ করেন, যার ফলস্বরূপ গাছের আরও মূল্যায়ন হয়। বিশেষত, সময়ের 3/4 সময় অন্তত দুটি লিঙ্কের মধ্যে গাছের পাতাগুলি উপস্থিত হয় এবং সেই ক্ষেত্রে আপনার গাছের গড় 3/4 মূল্যায়ন করতে হয় (যদি একটি লিঙ্ক থাকে) বা 7 / গাছের 8 টি (যদি সেখানে দুটি থাকে), সুতরাং আপনি ইতিমধ্যে 1/2 * 3/4 ​​+ 1/4 * 7/8 = (7 + 12) / 32 = 21/32 = অনুসন্ধানের প্রত্যাশায় রয়েছেন 0.656 ... গাছের পাতার নোডগুলি থেকে দূরে যোগ করে একটি চক্রের সাথে একটি গাছ অনুসন্ধানের ব্যয়ও যোগ না করেই গাছটি।

এছাড়াও, বিএফএসের চেয়ে ডিএফএস কার্যকর করা সহজ। সুতরাং আপনি যদি আপনার চক্র সম্পর্কে কিছু না জেনে থাকেন তবে এটি ব্যবহার করার জন্য একটি (উদাহরণস্বরূপ চক্রগুলি আপনি যে গোড়া থেকে অনুসন্ধান করেছেন তার কাছাকাছি হতে পারে, যেখানে বিএফএস আপনাকে একটি সুবিধা দেয়)।


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

@ ভ্লাদ - সংখ্যাগুলি যাদু নয়। এগুলি হ'ল মানে, এগুলি হিসাবে বর্ণিত হয় এবং আমি যে অনুমানগুলি বলেছিলাম তা দিয়ে গণনা করা প্রায় নগণ্য। যদি গড় দ্বারা প্রায় কাছাকাছি করা খুব খারাপ অনুমান হয়, এটি একটি বৈধ সমালোচনা হবে। (এবং আমি স্পষ্টভাবে বলেছি যে আপনি যদি কাঠামো সম্পর্কে অনুমান করতে পারেন তবে উত্তরটি পরিবর্তন হতে পারে))
রেক্স কের

সংখ্যাগুলি যাদুকরী কারণ তাদের কোনও অর্থ নেই। আপনি একটি কেস নিয়েছিলেন ডিএফএস আরও ভাল করে এবং ফলাফলগুলি সাধারণ ক্ষেত্রে বহির্মুখী করে তোলে। আপনার বক্তব্য ভিত্তিহীন: "ডিএফএস চক্রটিকে আঘাত করবে যখন এটি প্রায় অর্ধেক গাছের উপরে hitাকা থাকবে": এটি প্রমাণ করুন। আপনি গাছের চক্র সম্পর্কে কথা বলতে পারবেন না তা উল্লেখ করার দরকার নেই। সংজ্ঞা অনুসারে একটি গাছের একটি চক্র থাকে না। আমি আপনার পয়েন্ট কি তা দেখতে পাচ্ছি না। ডিএফএস কোনও এক প্রান্তে চলে যাবে যতক্ষণ না এটি কোনও শেষ প্রান্তে আঘাত করে, তাই আপনার গড়পড়তা কতটা গ্রাফিক (গাছ নয়) তা আবিষ্কার করবে তা জানার উপায় নেই। আপনি কেবল একটি এলোমেলো মামলা বেছে নিয়েছেন যা কিছুই প্রমাণ করে না।
আইভ্ল্যাড 20'10

@ ভ্ল্যাড - সমস্ত ননসাইক্লিক সম্পূর্ণরূপে সংযুক্ত অনির্দেশিত গ্রাফগুলি (অরক্ষিত পূর্বনির্দেশিত) গাছ। আমার অর্থ "এমন একটি গ্রাফ যা একটি উত্সাহী লিঙ্কের জন্য গাছের সংরক্ষণ হবে"। সম্ভবত এটি অ্যালগরিদমের মূল অ্যাপ্লিকেশন নয় - সম্ভবত আপনি কিছু জটযুক্ত গ্রাফের মধ্যে চক্রটি খুঁজতে চান যার খুব লিঙ্ক রয়েছে যা এটি গাছ নয়। তবে এটি যদি গাছের মতো হয়, সমস্ত গ্রাফের উপরে গড় হয় তবে কোনও নোড সমানভাবে বলেছিল উত্সাহিত লিঙ্কের উত্স, যা লিঙ্কটি আঘাত হানার পরে প্রত্যাশিত গাছের কভারেজকে 50% করে তোলে। সুতরাং আমি গ্রহণ করি যে উদাহরণটি প্রতিনিধি নাও থাকতে পারে। তবে গণিতটি তুচ্ছ হওয়া উচিত।
রেক্স কের

1

কোনও গ্রাফটি চক্রযুক্ত তা প্রমাণ করার জন্য আপনাকে কেবল এটির একটি চক্র রয়েছে প্রমাণ করতে হবে (প্রত্যক্ষ বা অপ্রত্যক্ষভাবে নিজের দিকে প্রান্ত নির্দেশ করছে)।

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

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


0

যদি আপনি পুনরাবৃত্ত বা পুনরুক্তি প্রয়োগের কথা বলছেন তবে এটি ধরণের নির্ভর করে।

রিকার্সিভ-ডিএফএস প্রতি নোডে দু'বার দর্শন করে। আইট্রেটিভ-বিএফএস একবারে প্রতিটি নোডে যান।

আপনি যদি একটি চক্র সনাক্ত করতে চান তবে আপনাকে নোডগুলি "সংযুক্ত" করার আগে এবং নোড দিয়ে "সমাপ্ত" করার সময় উভয়ই আপনার নোডগুলি সংযুক্ত করার আগে এবং পরে উভয়ই আপনাকে তদন্ত করতে হবে।

এর জন্য আইট্রেটিভ-বিএফএসে আরও কাজ করা প্রয়োজন তাই বেশিরভাগ লোক रिकর্সিভ-ডিএফএস চয়ন করে।

উল্লেখ্য, স্টেট :: স্ট্যাক সহ আইট্রেটিভ-ডিএফএসের একটি সাধারণ বাস্তবায়ন আইট্রেটিভ-বিএফএসের মতো একই সমস্যা রয়েছে। সেক্ষেত্রে নোডে কাজ শেষ করার পরে আপনাকে ডামি উপাদানগুলি স্ট্যাকের মধ্যে রাখতে হবে place

আপনি যখন নোড (টোপোসোর্টের প্রসঙ্গে উত্তর দিয়েছিলেন) দিয়ে "সমাপ্ত" করবেন তখন নির্ধারণ করতে কীভাবে আইট্রেটিভ-ডিএফএসের অতিরিক্ত কাজের প্রয়োজন তার আরও তথ্যের জন্য এই উত্তরটি দেখুন:

পুনরাবৃত্তি ছাড়াই ডিএফএস ব্যবহার করে টপোলজিকাল সাজান

আশা করা যায় যে এটি লোকেদের যখন নোড প্রক্রিয়াজাতকরণ "সমাপ্ত" করার সময় আপনাকে নির্ধারণ করতে হবে এমন সমস্যার জন্য লোকেরা কেন रिकর্সিভ-ডিএফএসকে সমর্থন করে তা ব্যাখ্যা করে।


এটি সম্পূর্ণরূপে ভুল, যেহেতু আপনি পুনরাবৃত্তি ব্যবহার করেন বা আপনি পুনরাবৃত্তি দ্বারা পুনরাবৃত্তিটি নির্মূল করেন তা বিবেচ্য নয়। আপনি একটি পুনরাবৃত্ত ডিএফএস বাস্তবায়ন করতে পারেন যা প্রতি নোডে দুবার পরিদর্শন করে, ঠিক যেমন আপনি একটি পুনরাবৃত্ত বৈকল্পিক প্রয়োগ করতে পারেন যা প্রতিটি নোডে একবারে একবার পরিদর্শন করে।
প্লাজম্যাসেল

0

আপনি BFSযখন নির্দেশিত গ্রাফে প্রদত্ত নোডযুক্ত সংক্ষিপ্ততম চক্রটি খুঁজতে চান তখন আপনাকে ব্যবহার করতে হবে।

যেমন:এখানে চিত্র বর্ণনা লিখুন

প্রদত্ত নোডটি যদি 2 হয় তবে তিনটি চক্র যেখানে এটির অংশ - [2,3,4], [2,3,4,5,6,7,8,9]& [2,5,6,7,8,9]। সবচেয়ে ছোট হয়[2,3,4]

বিএফএস ব্যবহার করে এটি বাস্তবায়নের জন্য, আপনাকে যথাযথ ডেটা স্ট্রাকচার ব্যবহার করে পরিদর্শন করা নোডের ইতিহাস স্পষ্টভাবে বজায় রাখতে হবে।

তবে অন্যান্য সমস্ত উদ্দেশ্যে (যেমন: কোনও চক্রীয় পথ খুঁজে পাওয়া বা একটি চক্র বিদ্যমান কিনা তা পরীক্ষা করা), DFSঅন্যরা উল্লিখিত কারণগুলির জন্য পরিষ্কার পছন্দ।

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