বেলম্যান-ফোর্ড অ্যালগরিদম - কেন ক্রমগুলি বাইরে প্রান্তগুলি আপডেট করা যেতে পারে?


14

বেলম্যান-ফোর্ড অ্যালগরিদম একটি উৎস থেকে সবচেয়ে কম পথ নির্ধারণ করে সব অন্যান্য ছেদচিহ্ন করতে। প্রাথমিকভাবে এবং অন্যান্য সমস্ত শীর্ষ কোণের মধ্যে দূরত্ব সেট করা হয়েছে । তারপরে থেকে প্রতিটি শীর্ষবৃত্তের সংক্ষিপ্ততম পথটি গণনা করা হয়; এটি পুনরাবৃত্তির জন্য চলে । আমার প্রশ্নগুলি হ'ল:sss|V|1

  • কেন |V|1 পুনরাবৃত্তি হওয়া দরকার?
  • আমি যদি আলাদা অর্ডে প্রান্তগুলি পরীক্ষা করে থাকি তবে কী ব্যাপার হবে?
    বলুন, আমি যদি প্রথম প্রান্তটি 1,2,3 টি পরীক্ষা করে দেখি তবে তারপরে দ্বিতীয় পুনরাবৃত্তিতে আমি 2,3,1 পরীক্ষা করি।

MIT- র প্রফেসর এরিক অর্ডার ব্যাপার না বলেন, কিন্তু এই বিভ্রান্ত আমিঃ অ্যালগরিদম ভুল প্রান্ত উপর ভিত্তি করে একটি নোড আপডেট হতে হবে যদি এর মান প্রান্ত উপর নির্ভরশীল ছিল কিন্তু পর আপডেট করা হয় ?x2x1x1x2


আপনি কোন বাস্তবায়ন বিবেচনা করেন? ডায়নামিক প্রোগ্রামিং এর সাথে অর্ডার নিয়ে সমস্যা নেই, স্পষ্টতই; অন্যদের জন্য এটি অপ্রয়োজনীয় হতে পারে।
রাফেল

উত্তর:


15

থেকে , পর্যন্ত সংক্ষিপ্ততম পথটি বিবেচনা করুন । এই পথটি সর্বাধিক নিয়ে গঠিত প্রান্ত, সবসময় একটি খারাপ ধারণা কারণ একটি সংক্ষিপ্ত পাথ একটি প্রান্তবিন্দু পুনরাবৃত্তি (বা অন্তত একটা সংক্ষিপ্ত পাথ যা না পুনরাবৃত্তি ছেদচিহ্ন করে থাকে), নেতিবাচক ওজন চক্র নেই যদি আমরা না ।sts,v1,v2,,vk,t|V|1

এক রাউন্ডে, আমরা জানি যে প্রান্তটি শিথিল হবে, সুতরাং জন্য দূরত্বের অনুমানটি এই রাউন্ডের পরে সঠিক হবে be মনে রাখবেন যে এই মুহুর্তে কী সে সম্পর্কে আমাদের কোনও ধারণা নেই , তবে আমরা সমস্ত প্রান্ত শিথিল করেছি , আমাদের অবশ্যই এটি অবশ্যই শিথিল করে ফেলতে হবে। রাউন্ড , আমরা কিছুটা সময় শিথিল । বা কী কী তা আমাদের এখনও ধারণা নেই তবে আমরা জানি তাদের দূরত্বের অনুমান সঠিক।(s,v1)v1v1(v1,v2)v1v2

এই পুনরাবৃত্ত, কিছু বৃত্তাকার পরে , আমরা কবে নাগাদ আছে , যার পরে জন্য দূরত্ব হিসাব সঠিক। পুরো অ্যালগরিদম শেষ না হওয়া পর্যন্ত কী হবে তা আমাদের কোনও ধারণা নেই তবে আমরা জানি যে এটি কোনও সময়ে ঘটবে (কোনও নেতিবাচক ওজন চক্র ধরে নিই না)।k+1(vk,t)tk

সুতরাং, গুরুত্বপূর্ণ পর্যবেক্ষণটি হ'ল রাউন্ড পরে , সবচেয়ে ছোট পাথের নোডের অবশ্যই তার দূরত্বের অনুমানটি সঠিক মান হিসাবে সেট করা উচিত। যেহেতু পথটি সর্বাধিক প্রান্ত দীর্ঘ, রাউন্ডটি এই সংক্ষিপ্ততম পথটি খুঁজে পেতে যথেষ্ট। যদি কতম রাউন্ডে এখনও কিছু পরিবর্তন হয়, তারপরে অদ্ভুত কিছু চলছে: সমস্ত পাথ ইতিমধ্যে তাদের চূড়ান্ত মানগুলিতে 'নিষ্পত্তি' করা উচিত, তাই আমাদের অবশ্যই এমন পরিস্থিতি তৈরি করতে হবে যা কিছু নেতিবাচক ওজন চক্র বিদ্যমান existsi | ভি | - 1ii|V|1|V|1|V|


আমার এখানে একটি ছোট সন্দেহ আছে I আমি বিশ্বাস করি | ভি | -1 সবচেয়ে খারাপ রাউন্ডের সংখ্যার পরে সংক্ষিপ্ততম পথটি এস থেকে টি পর্যন্ত গণনা করা হয় we অনুমান করা যাক আমাদের প্রান্তে s, v1, v2..vn, t.If হলে প্রান্তগুলি (গুলি, ভি 1), (ভি 1, ভি 2) .. (ভিএন, টি) বলে এই ক্রমে বেছে নেওয়া হয়েছে, তবে একটি একক পুনরাবৃত্তিতেই আমাদের কাছে এস থেকে টি পর্যন্ত সবচেয়ে সংক্ষিপ্ত পথ হবে understanding এটি কেবল বোঝার জন্য এবং ইন ব্যবহারিক শর্তাদি আমরা প্রান্তগুলি বাছাই করার ক্রমটি জানি না এবং তাই | ​​ভি | -1 রাউন্ডস Iআমি ঠিক আছি?
whokares

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

আপডেটের জন্য ধন্যবাদ। আমি এটি পেয়েছি the উপাদানগুলির মধ্যে একটিতে, এটি স্লাইড <br> স্লাইড হিসাবে উল্লেখ করা হয়েছে: শিথিলকরণের আদেশের একটি খারাপ পছন্দ খুব বেশি শিথিল করতে পারে: <br> স্লাইড 8: প্রান্ত শিথিলতার "স্মার্ট" ক্রম <br>
who২ares

প্রতিটি পুনরাবৃত্তিতে প্রান্তের ক্রম নির্বিশেষে, সংক্ষিপ্ততম পথগুলি | v | -1 পুনরাবৃত্তিতে সঠিকভাবে গণনা করা হবে? কেন তিনি তাত্পর্যপূর্ণ বলছেন D তিনি বলতে চাইলে আমরা সাধারণত যদি সমস্ত পুনরাবৃত্তির জন্য একই ক্রমটি বেছে নিয়ে থাকি তবে শিথিলকরণ কোডটি কল করা হবে তবে একটি ভার্টেক্সের জন্য লেবেল আপডেট করার ফলে প্রসেসর সংরক্ষণের আদেশের কারণে খুব কম সংখ্যক বার ঘটতে পারে oes সময়?
whokares

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

3

দীর্ঘতম কোনও পথ কোনও চক্র ছাড়াই হতে পারে |V|। আমরা একটি উত্স দিয়ে শুরু করি, সুতরাং ইতিমধ্যে আমাদের দৈর্ঘ্য 1 এর একটি পথ রয়েছে, তাই |V| - 1দীর্ঘতম পাথ পেতে আমাদের আরও নোডের প্রয়োজন ।

অর্ডারটি গুরুত্বপূর্ণ নয় কারণ প্রতিটি অর্ডারটি আক্রমণকারীটি বজায় রাখবে: nপুনরাবৃত্তির পরে , প্রতিটি নোডের মান sসবচেয়ে বেশি nপ্রান্তে থাকা নোড থেকে নূন্যতম ব্যয়ের পথের ব্যয়ের চেয়ে কম বা সমান ।

যদি কোনও পুনরাবৃত্তির শুরুতে, ব্যয়টি nনোড পর্যন্ত সঠিক হয় তবে পুনরাবৃত্তির শেষে এটি n+1নোড পর্যন্ত সঠিক হয় । একটি পুনরায় অর্ডারিংয়ের ফলে কিছু নোডগুলি সাধারণত আপডেট হওয়ার আগে তাদের কম দামে পড়তে পারে, তবে সেগুলি শেষ পর্যন্ত যাইহোক আপডেট করা হবে।


আমি জানি না এটি কেবল আমার, বা আমি সত্যিই এই তথ্যগুলি সহজেই কল্পনা করতে পারি না। আমার কাছে, আমি এখনও মনে করি এমন কিছু নোড থাকতে পারে যা ভি -1 পুনরাবৃত্তির মধ্যে আপডেট হয়নি।
ব্যবহারকারী 1675999

না, আপনার | E | = | ভি | -1 প্রান্তগুলি রয়েছে যখন আপনার | ভি | আছে চক্র ছাড়াই একটি সরল পথ দ্বারা সংযুক্ত নোড। এবং আপনার | ভি | -1 পুনরাবৃত্তি রয়েছে, আপনার প্রতিক্রিয়া মুছুন কারণ এটি ভুল।
স্যাম

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