গতিশীল গ্রাফের সংক্ষিপ্ততম পথটি পুনরুদ্ধার করা


24

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

  • দ্রষ্টব্য: অ্যালগরিদমের প্রথম পুনরাবৃত্তির পরে পরিবর্তনগুলি করা যেতে পারে
  • নোট [2]: দুই নোড দেওয়া হয়, উৎস এবং লক্ষ্য। এই নোডগুলির মধ্যে আমার সবচেয়ে সংক্ষিপ্ততম পথটি সন্ধান করা উচিত। যখন গ্রাফটি আপডেট করা হয় তখন আমাকে কেবলমাত্র আপডেট করতে হবে , যা এবং মধ্যে সংক্ষিপ্ততম পথ ।t π ( s , t ) s টিগুলিটিπ(গুলি,টি)গুলিটি
  • দ্রষ্টব্য [3]: আমি কেবল প্রান্ত সন্নিবেশ ক্ষেত্রে আগ্রহী।

একটি আনুষ্ঠানিক সংজ্ঞা : একটি গ্রাফ দেওয়া । আপডেট অপারেশনটিকে 1 হিসাবে সংজ্ঞায়িত করুন ) থেকে বা 2 এর প্রান্তের সন্নিবেশ ) থেকে প্রান্তটি মোছা হবে । উদ্দেশ্যটি হ'ল কোনও আপডেট ক্রিয়াকলাপের পরে সমস্ত জোড়ের সবচেয়ে সংক্ষিপ্ত পথের জন্য দক্ষতার সাথে অনুসন্ধান করা। দক্ষতার দ্বারা, আমরা প্রতিটি আপডেট ক্রিয়াকলাপের পরে বেলম্যান-ফোর্ড অ্যালগরিদম এর মতো একটি অল-পেয়ারস-শর্টেস্ট-পাথ অ্যালগরিদমকে সম্পাদন করার চেয়ে কমপক্ষে আরও ভাল।জি=(ভী,)E e E


সম্পাদনা করুন: নীচে সমস্যার একটি সরলীকৃত সংস্করণ রয়েছে:

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


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

উত্তর:


14

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

একটি প্রান্ত যুক্ত করার ক্ষেত্রে - তারপরে আপনার ইতিমধ্যে অন্তর্নির্মিত ম্যাট্রিক্স ব্যবহার করে - নিম্নলিখিতটি করুন:(u,v)

প্রতিটি জোড় নোডের জন্য এবং y চেক করুন ডি ( ( এক্স , ইউ ) ) + সি ( ( ইউ , ভি ) ) + ডি ( ( ভি , ) ) < ডি ( ( এক্স , ওয়াই ) ) - এটি করা যেতে পারে মধ্যে হে ( 2 ) আপনি নোড যে যুগল তুলনা করা হয়, যেহেতু।xyd((x,u))+c((u,v))+d((v,y))<d((x,y))O(n2)

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

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

আপনি যদি এর চেয়ে ভাল ফলাফল পেতে চান তবে একবার দেখুন:

  1. দেমেট্রেস্কু, কামিল এবং জিউসেপ এফ। ইতালিয়ানো। "সমস্ত জোড়ের সংক্ষিপ্ততম পথকে গতিশীল করার জন্য একটি নতুন পদ্ধতির" এসিএমের জার্নাল (জেএসিএম) 51.6 (2004): 968-992। (গুগল থেকে নিখরচায় পাওয়া যাবে)

  2. অথবা এই সুন্দরভাবে লিখিত সমীক্ষায় একবার দেখুন


17

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

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

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


আমি গ্রাফের সমস্ত সংক্ষিপ্ততম পাথ আপডেট করার দরকার নেই, তবে কেবলমাত্র একটি প্রদত্ত জোড়া । এর জন্য আরও ভাল কিছু আছে কি? (গুলি,টি)
রন্টোগিয়ানিস অ্যারিস্টোফানিস

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

@ রোন্ডোগিয়ানিস আরিস্টোফেনস যত ভাল পারফরম্যান্স তৈরি করবেন, বাস্তবায়ন করা তত বেশি কঠিন (বেশিরভাগ ক্ষেত্রে) এবং কখনও কখনও ব্যবহারিক প্রয়োগগুলিতে আপনাকে পারফরম্যান্সের এত উন্নতির প্রয়োজন হয় না।
এজেড

@ আজেদ আমি সমস্যার সহজ সরল বর্ণনা অন্তর্ভুক্ত করার জন্য আমার পোস্টটি সম্পাদনা করেছি।
রন্টোগিয়ানিস অ্যারিস্টোফানিস

5

আমি বিশ্বাস করি AD * অ্যালগরিদম আপনাকে সাহায্য করতে পারে।

http://www.cs.cmu.edu/~ggordon/likhachev-etal.anytime-dstar.pdf

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

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

http://www.cs.cmu.edu/~maxim/software.html

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