ডিজকস্ট্রার অ্যালগরিদম কি কেবল বিএফএসের অগ্রাধিকারের সারিতে রয়েছে?


22

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


1
কেন এমন ভাবছেন?
রাফেল

@ রাফেল যেহেতু এটি খুব সহজ বলে মনে হচ্ছে এবং এটি হ'ল: আমি এটি আবারও অধ্যয়ন করেছি এবং এখন দেখছি এটি নোডের মধ্যকার দূরত্বের সন্ধান করে না, সুতরাং এটি সত্যই ডিএইচএফএস নয়, বিএফএস।
ব্যারি ফ্রুটম্যান

1
ওয়েল, Dijkstra করে মান কিউ সঙ্গে (প্রায়ই বলা হয় "শিথিলকরণ") "সাজানো" হয় পরিবর্তন; আপনি যদি এটি নিষেধ করেন, এটি একই নয়, সত্য।
রাফেল

উত্তর:


20

আপনি ডিজেস্ট্রার অ্যালগরিদমকে বিএফএস হিসাবে অগ্রাধিকারের সারি দিয়ে প্রয়োগ করতে পারেন (যদিও এটি একমাত্র বাস্তবায়ন নয়)।

ডিজকস্ট্রার অ্যালগরিদম সেই সম্পত্তির উপর নির্ভর করে যে থেকে পর্যন্ত সংক্ষিপ্ততম পথটি পথের পাশের যে কোনও অনুভূমিক্যের সংক্ষিপ্ততম পথ। বিএফএস ঠিক এটাই করে।টিst

বা অন্য দৃষ্টিকোণে: সমস্ত ওজন 1 হলে ডিজকস্ট্রার অ্যালগরিদম কীভাবে আচরণ করবে? হুবহু বিএফএসের মতো।


4

প্রথমত, কীভাবে আমরা বিএফএসকে আরও সাধারণ ওজনযুক্ত গ্রাফ সাথে মানিয়ে নিতে পারি ?G=(V,E)

দাশগুপ্ত এট আল রচিত "অ্যালগরিদম (বিভাগ 4.4)" বইটি থেকে এখানে একটি ধারণা দেওয়া হয়েছে:

কোনো প্রান্ত এর (ওজনের ), এটি দ্বারা প্রতিস্থাপন দৈর্ঘ্য কোণগুলি , যোগ করে মধ্যে ডামি নোড এবং ।E l e l e 1 l e - 1 u ve=(u,v)Elele1le1uv

ফলস্বরূপ, ফলাফল গ্রাফ এর প্রান্তগুলির এককের দৈর্ঘ্য রয়েছে। অতএব, আমরা দূরত্বের গনা করতে উপর এই বি চালিয়ে । জি জি 'GGG

দ্বিতীয়ত, তে ডিজকস্ট্রার অ্যালগরিদম কীভাবে রূপান্তরিত গ্রাফ তে বিএফএসকে পরাজিত করে ?জি GG

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

তৃতীয়ত, ডিজজস্ট্রার অ্যালগোরিদম অপ্রকাশিত গ্রাফগুলিতে কীভাবে আচরণ করে?

এটি বিএফএসের মতোই আচরণ করে। আমরা এটি দুটি প্রধান পয়েন্ট থেকে ব্যাখ্যা করি।

  • "শিথিলকরণ" এ।

    সাধারণ, ওজনযুক্ত গ্রাফের উপর ডিজকস্ট্রার অ্যালগরিদমের জন্য শিথিলযোগ্যতা

    for all edges (u,v) in E:
        if dist(v) > dist(u) + w(u,v)
           dist(v) = dist(u) + w(u,v)
    

    অপ্রকাশিত গ্রাফের বিএফএসের জন্য, আমরা জানি যে এবং , তাই শিথিলকরণটি সহজ:w ( u , v ) = 1dist(v)=w(u,v)=1

    for all edges (u,v) in E:
        if dist(v) = \infty
           dist(v) = dist(u) + 1
    
  • "অগ্রাধিকার সারিতে" On

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

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