অপরিচ্ছন্ন গ্রাফগুলিতে সংক্ষিপ্ততম পথগুলি খুঁজে পেতে কেন ডিএফএস ব্যবহার করা যাবে না?


16

আমি বুঝতে পেরেছি যে ডিএফএস "যেমন হিসাবে" ব্যবহার করা একটি অদম্য গ্রাফের মধ্যে সবচেয়ে স্বল্পতম পথ পাবে না।

তবে ডিএফএস-এ টুইট করা কেন এটি অপ্রত্যাশিত গ্রাফের মধ্যে এমন হতাশ প্রত্যাশার সংক্ষিপ্ততম পথ খুঁজে পেতে দেয়? বিষয়টিতে সমস্ত পাঠ্যগুলি কেবলমাত্র বলে যে এটি করা যায় না। আমি অপ্রকাশিত (নিজে চেষ্টা না করে)।

আপনি কি এমন কোনও পরিবর্তন জানেন যা ডিএফএসকে অদম্য গ্রাফের সবচেয়ে কমতম পথগুলি খুঁজে পেতে দেবে? যদি তা না হয় তবে এটি কীভাবে অ্যালগরিদমকে এত কঠিন করে তোলে?


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

1
কিছু (ভালভাবে নির্বাচিত) গ্রাফগুলিতে ডিএফএস ব্যবহার করার চেষ্টা করুন; যদি এটি সত্যিই কাজ করে না, আপনার সমস্যার মুখোমুখি হওয়া উচিত। বিটিডব্লিউ, আপনার প্রশ্নটি এমনভাবে পড়ে যাতে এটি ভারিত গ্রাফগুলিতে কাজ করে।
রাফেল

হ্যাঁ, আপনি এটা করতে পারেন. সমাধানটি এখানে
আনমল মিধা

উত্তর:


12

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

একমাত্র সম্ভাব্য বিকল্প (সংক্ষিপ্ততম পথগুলির দিকে) আমি আসতে পারি একটি লোভী দৃষ্টিভঙ্গি, যা বর্তমান নোড থেকে (ছোট থেকে বড়) তাদের দূরত্বের ভিত্তিতে বাচ্চাদের দিকে তাকিয়ে থাকে। এই নিয়মের জন্য একটি কাউন্টারেরেক্সামাল তৈরি করা সহজ:

লোভী বিধি জন্য পাল্টা উদাহরণ
[ উত্স ]

এখন, এটির কোনও প্রমাণ নেই যে পরবর্তী শিশুটিকে তদন্তের জন্য বেছে নেওয়ার কৌশল উপস্থিত নেই যা ডিএফএসকে সবচেয়ে দীর্ঘতম পথগুলি সন্ধান করবে।

যাইহোক, নিয়মটি বিবেচনা না করেই - আপনি লোভী নিয়মের জন্য যেমনটি করেছিলেন ঠিক তেমনি গ্রাফগুলিও আপনি তৈরি করতে পারেন যা ডিএফএস প্রথম নোডে একটি দীর্ঘ পথচালনার প্রতিশ্রুতিবদ্ধ। বরাদ্দ প্রান্ত এবং ওজন যেমন যে নিয়ম তা চয়ন দেখার জন্য প্রথম, এবং বরাদ্দ এক তুলনায় ওজন বেশী । সুতরাং, এটি প্রশংসনীয় যে ডিএফএস কখনও সংক্ষিপ্ততম পাথ (সাধারণ গ্রাফগুলিতে) খুঁজে পাবে না।( গুলি , ) ( , ) ( গুলি , টি )(s,t)(s,a)a(a,b)(s,t)

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


  1. যতক্ষণ নিয়ম নির্ধারক হয়। যদি এটি না হয় তবে এটি সর্বদা সংক্ষিপ্ততম পথগুলি খুঁজে পায় না ।

আমি ভুল হলে আমাকে সংশোধন করুন, তবে এর অর্থ কি ডিএফএস যে কোনও গ্রাফের সবচেয়ে সংক্ষিপ্ত পথ খুঁজে পেতে পারে, তবে তা করার সময় তাড়াতাড়ি সময় লাগবে?
আনমল সিং জাগি

@ আনমোলসিংহ জাগি নং ডিএফএস কেবল কখনও একটি পথ খুঁজে পায়।
রাফায়েল

10

প্রস্থ -প্রথম-অনুসন্ধান হল অ্যালগরিদম যা অদ্বিতীয় গ্রাফের মধ্যে সবচেয়ে ছোট পথ খুঁজে পাবে।

ডিএফএস থেকে অ্যালগরিদম এ যাওয়ার জন্য একটি সহজ ঝাঁকুনি রয়েছে যা একটি অপ্রকাশিত গ্রাফের সবচেয়ে ছোট পথ খুঁজে পাবে। মূলত, আপনি ডিএফএস দ্বারা ব্যবহৃত স্ট্যাকটি একটি সারি দিয়ে প্রতিস্থাপন করেন। তবে ফলস্বরূপ অ্যালগরিদমকে আর ডিএফএস বলা হয় না। পরিবর্তে, আপনি প্রস্থ-প্রথম-সন্ধানটি কার্যকর করেছেন।

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


3

আপনি পারবেন !!!

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

সমস্ত সম্ভাব্য অনুসন্ধানের জন্য ব্যয় / পথ সংরক্ষণ করুন যেখানে আপনি লক্ষ্য নোড পেয়েছেন, এই জাতীয় সমস্ত ব্যয় / পথের তুলনা করুন এবং সংক্ষিপ্ততমটি বেছে নিন chose

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


1
আপনি লক্ষ করতে চাইতে পারেন যে এটি জটিলতায় ব্যাপক পরিবর্তন করে । যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে এটি সম্ভাব্যভাবে থেকে পর্যন্ত প্রতিটি সম্ভাব্য পথ অন্বেষণ করবে । টিst
রায়ান 21

1
@ user2407394 আপনি কি একবার ডিএফএসের এই প্রকরণটি বাস্তবায়িত করেছেন এবং মাঝারিভাবে বড় গ্রাফের জন্য সঠিকভাবে চালিত করেছেন? আমি এই পরিবর্তনটিকে ডিএফএস হিসাবে বলতে দ্বিধা বোধ করব। আমি এটিকে গভীরতা-প্রথম পাথ-ক্লান্তিকর অনুসন্ধান বলব।
জন এল।

আমি এই ধরণের পদ্ধতির প্রয়োগ করেছি, এটির কাজটি খুব ধীর। আমি পারফরম্যান্সের উন্নতির জন্য স্মৃতিবদ্ধকরণ যুক্ত করার কথা ভাবছি।
মাইক

@ user2407394 দেখে মনে হচ্ছে এটি কাজ করবে তবে আপনি কীভাবে পরীক্ষা করবেন যখন আপনি 'চিহ্নিত' তালিকাগুলি অচিহ্নিত না করেন তবে কখন থামবেন?
জো ব্ল্যাক

0

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


-3

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


2
দয়া করে আরও বিশদ দিন। আপনি এই একক বাক্যে কী অ্যালগরিদম বর্ণনা করার চেষ্টা করছেন তা আমি বলতে পারি না।
ডেভিড রিচার্বি

-3

আপনি পারেন

গ্রাফটি ডিএফএস পদ্ধতিতে অনুসরণ করুন এবং চেক করুন

if(distance[dest] > distance[source]+cost[source_to_destination]){
    distance[dest] = distance[source] + cost[source_to_destination]);
}

সম্পূর্ণ সমাধানের লিঙ্কটি এখানে


1
গৃহীত উত্তর দাবি করে এটি সম্ভব নয়, যা আপনার দাবির বিরোধী। তবুও আপনি কেন ভাবছেন যে এই পদ্ধতির কাজ করে তা আপনি ব্যাখ্যা করতে পারেন? (বা কেন এই পদ্ধতিটি সাধারণভাবে কাজ করে তা ব্যাখ্যা করুন)
টিকটিকি

এ তো শুধু পুনরাবৃত্তি user2407394 এর উত্তর শুধুমাত্র সঙ্গে, হার্ড-টু-বুঝতে কোড (আপনি সংজ্ঞায়িত না করেছি কি কোন যারা ভেরিয়েবল গড়, এবং এটা সুস্পষ্ট নয়, আমার কাছে) পরিবর্তে একটি ব্যাখ্যা?
ডেভিড রিচার্বি

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