গ্রাফ গভীরতা-প্রথম অনুসন্ধানে ধূসর নোডের উদ্দেশ্য


19

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

উত্তর:


26

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

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

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


2
+1 ভাল ব্যাখ্যা। পুনর্নির্দেশিত গ্রাফের সমস্ত নোডের সরল ট্র্যাভারসাল করার জন্য (যেমনটি আমার প্রশ্নবঙ্গিতে সংযুক্ত একটি), গ্রে এবং ব্ল্যাকের কোনও কার্যকরী পার্থক্য নেই?
ব্যবহারকারী 6805

1
@ ইউজার 5৮০৫ সরল ট্র্যাভারসালের জন্য - প্রতিটি নোডে যান - নির্দেশিত বা অপরিবর্তিত গ্রাফ উভয়ের জন্য, ধূসর এবং কালোতে কোনও কার্যকরী পার্থক্য নেই। আপনি কেবল দুটি রঙ ব্যবহার করতে পারেন (বা পরিদর্শন করেছেন / দেখেননি)। এটি আরও জটিল অ্যালগরিদমের জন্য যা আপনার রঙ প্রয়োজন।
পরেশ

আমি এটা বুঝেছিলাম! ঠিক আছে, নিম্নলিখিত কেসটি বিবেচনা করুন: twitter.com/MaksimADmitriev/status/796995958043279361 আমরা ডিএফএস ব্যবহার করে গ্রাফগুলি অতিক্রম করি। বাম দিকের গ্রাফটি এই উত্তর থেকে প্রাপ্ত গ্রাফের মতো এবং এটিতে চক্র নেই। আসুন ডানদিকে গ্রাফটি অতিক্রম করুন যা একটি চক্র রয়েছে। আমরা এ দেখতে এবং এটি ধূসর চিহ্নিত। আমরা বি পরিদর্শন করি এবং এটি ধূসর চিহ্নিত করি। আমরা সি পরিদর্শন করি এবং এটি ধূসর চিহ্নিত করি। এখন আমরা এ-তে যাচ্ছি যা ইতিমধ্যে ধূসর। সুতরাং "কালো থেকে কালো" এর অর্থ এই নয় যে একটি চক্র রয়েছে, তবে "ধূসর থেকে ধূসর" হয়। এজন্য আমাদের ধূসর প্রয়োজন। আমি ভুল হলে দয়া করে আমাকে সংশোধন করুন
মাকসিম দিমিত্রিভ

আরও জটিল উদ্দেশ্যে যেমন দৃ strongly়ভাবে সংযুক্ত উপাদানগুলি সন্ধানের জন্য, প্রতিটি নোডের জন্য একজনকে দু'বার রেকর্ড করতে হবে: নোডের প্রথমবারের মতো প্রাক-সময় (যেমন, এটি ধূসর বর্ণের সময়) এবং নোড পরিদর্শন করার পরে পোস্ট-টাইম হয় (অর্থাত্, এটি রঙিন কালো)। রেকর্ডিংগুলি বাস্তবায়নের জন্য, একটি পাল্টা রক্ষণাবেক্ষণ করা হয়, যা প্রতিটি ইভেন্টের সাথে সাথে বাড়ানো হয়।
জন

2

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

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


0

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

ধরা যাক ভার্টেক্স এ এর ​​দুটি প্রতিবেশী বি এবং সি আছে এবং বি এর এক প্রতিবেশী ডি আছে

ভার্টেক্স এ থেকে শুরু করুন যা সাদা বর্ণ এবং এটিকে ধূসর এবং তার প্রতিবেশীর কাছে যেতে পারে।

আসুন বর্ণানুক্রমিক ক্রমটি চয়ন করে এটি শিখুন যেটি ভার্টেক্স বিতে সাদা রঙের এবং ধূসর হিসাবে চিহ্নিত।

তারপরে সাদা -> ধূসর ডি -> এর আর ডি প্রতিবেশী আর নেই। সুতরাং ডি-> কালো চিহ্নিত করে ।

এখন, গ্রেতে বি-তে ব্যাকট্র্যাক করুন এবং আরও নেতিবাড়ী নেই। সুতরাং বি-> কালো চিহ্নিত করে ।

এগেইন এটিকে ধূসর রঙে ব্যাকট্রাক করে এবং সি-> সিতে চিহ্নটি দেখতে ধূসর আর কোনও প্রতিবেশী সি কে কালো হিসাবে চিহ্নিত করে না

অবশেষে, এ এ ফিরে আসুন এবং প্রান্তিক এটিকে কালো হিসাবে চিহ্নিত করুন কারণ কোনও সাদা শিকাগুলি নেই এবং সমস্ত কালো হিসাবে।


আমি দেখতে পাচ্ছি না ধূসর এবং কালো রঙের মধ্যে পার্থক্যটির এখানে কোনও উদ্দেশ্য আছে
কিনা

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

আমি বিশ্বাস করি যে এটি আপনাকে কেবল পুনরায় দেখার নোডগুলি থেকে বাঁচায় যা আপনি জানেন কারও কাছে কোনও প্রান্ত নেই (যেমন অনুকূলকরণ)
শেথেরন

0

ডিএফএসে আমরা প্রান্তগুলি প্রান্ত, প্রান্ত, ক্রস-এজ এবং ট্রি-এজ হিসাবে শ্রেণিবদ্ধ করি।

আমরা প্রান্তগুলি শ্রেণিবদ্ধ করতে 3 টি রঙ ব্যবহার করি। এবং এই রঙগুলি ভার্টেক্সের অবস্থাকে অর্থাত্ v। সাদাকে প্রতিনিধিত্ব করে: ভার্টেক্স ভি এখনও আবিষ্কার হয়নি।

ধূসর: v ইতিমধ্যে আবিষ্কার করা হয়েছে, তবে ভি থেকে যেগুলি শীর্ষে পৌঁছতে পারে সেগুলি এখনও আবিষ্কার হয়নি। সুতরাং ভার্টেক্স ভি এখনও স্ট্যাকের মধ্যে রয়েছে।

কালো: ভি ইতিমধ্যে স্ট্যাকের বাইরে পপ আউট হয়েছে isc আবিষ্কার এবং শেষ।

ডিএফএস করার সময় যদি আপনি প্রান্তের মধ্য দিয়ে ধূসর প্রান্তের মুখোমুখি হন তবে এটি একটি পিছনের প্রান্ত। আপনি যদি প্রান্ত ই এর মধ্য দিয়ে একটি কালো প্রান্তের মুখোমুখি হন তবে এটি ক্রস এজ / ফরোয়ার্ড প্রান্ত। যদি আপনি সাদা ভার্টেক্সের মুখোমুখি হন তবে আপনি ডিএফএসকে পুনরাবৃত্তভাবে কল করবেন।


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

এই প্রান্তগুলি ডিএফএসের বিভিন্ন অ্যাপ্লিকেশনটিতে ব্যবহার করা যেতে পারে, যেমন কোনও গ্রাফের লুপগুলি চিহ্নিত করতে পিছনের প্রান্তগুলি ব্যবহৃত হয়, প্রতিটি জোড়ের উল্লম্ব অংশের মধ্যে অনন্য পথ উপস্থিত থাকলে ফরোয়ার্ড এবং ক্রস এজগুলি পরীক্ষার জন্য ব্যবহৃত হয়।
নীরজ সিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.