সমস্ত নোড এবং প্রান্তগুলি সহ সাবগ্রাফার যা কোনও পুনর্নির্দেশিত গ্রাফের দৈর্ঘ্য-সীমাবদ্ধ সরল পথের অংশ


12

আমার আগের পোস্ট করা প্রশ্নের সাথে বেশ মিল । এবার অবশ্য গ্রাফটি পুনর্নির্দেশিত।

প্রদত্ত

  • একটি পুনর্নির্দেশিত গ্রাফ যার কোনও একাধিক-প্রান্ত বা লুপ নেই,G
  • একটি উত্স প্রান্তবিন্দু ,s
  • একটি টার্গেট ভারটেক্স ,t
  • সর্বাধিক পথের দৈর্ঘ্য ,l

আমি খোঁজ করছি একটি subgraph - যে কোনো প্রান্তবিন্দু এবং যে কোন প্রান্ত রয়েছে (এবং কেবলমাত্র সেই), যা থেকে অন্তত একটি সহজ পথ অংশ করার দৈর্ঘ্য সঙ্গে । জি জি এস টি ≤ এলG′GGst≤l

মন্তব্য:

  • আমার পাথগুলি গণনার দরকার নেই।
  • আমি একটি দক্ষ অ্যালগরিদম (সময় এবং মেমরি উভয়) খুঁজছি, কারণ এটি খুব বড় গ্রাফের (10 ^ 8 ভার্ভটেক্স, 10 ^ 9 প্রান্ত) দিয়ে চালানো দরকার।

এটা দেখ. এই কাগজটি পাওয়া গেছে , যা মনে হয় একই রকম ন্যূনতম ব্যয়ের প্রবাহ হ্রাস করে, তবে সাধারণ এমসিএফ অ্যালগরিদমগুলি দ্রুত সমাধান করার জন্য নেটওয়ার্কের বিশেষ বৈশিষ্ট্যগুলি ব্যবহার করে।
— আরবি

উত্তর:


6

ঠিক আছে, সমস্যা সব পরে । আমি পূর্ববর্তী উত্তরটি রাখব কারণ এটি নির্দেশিত মামলার ক্ষেত্রেও কাজ করে (যা এনপিসি, অন্য প্রশ্নের জবাব হিসাবে দেওয়া হয়েছে), এবং এটি সাথে দেখায় ।F P T lPFPTl

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

নিম্নলিখিত পদ্ধতিটি সিদ্ধান্ত নেবে যে কিছু প্রান্ত আউটপুট গ্রাফের অংশ হওয়া উচিত। মূল সমস্যার উত্তর দেওয়ার জন্য সমস্ত প্রান্তে লুপ করুন।e=(u,v)∈E

ফ্লো নেটওয়ার্ক তৈরি করতে, নিম্নলিখিত হিসাবে করুন:

পদক্ষেপ 1: প্রসারিত করুন একটি এবং প্রতিস্থাপন করুন প্রান্তগুলি (এগুলি প্রবাহ নেটওয়ার্কের অংশ হিসাবে নির্দেশিত ), তাদের ব্যয় 0 এ সেট করুন।এক্স ই ই ( ইউ , এক্স ই ) , ( এক্স ই , ইউ ) , ( ভ , এক্স ই ) , ( এক্স ই , ভি )exee(u,xe),(xe,u),(v,xe),(xe,v)

পদক্ষেপ 2: ব্যতীত দুটি শীর্ষে এবং বাদ দিয়ে প্রতি প্রতিস্থাপন করুন এবং একটি প্রান্ত যুক্ত করুন । এই প্রান্তগুলির ব্যয়টি 1 এ সেট করুন।x e t - t + ( t - , t + )txet−t+(t−,t+)

পদক্ষেপ 3: এর প্রতিটি প্রান্ত এর কিনারা প্রতিস্থাপন করুন । এই প্রান্তগুলির ব্যয় 0 তে নির্ধারণ করুন।( এ + , বি){a,b}∈E(a+,b−),(b+,a−)

পদক্ষেপ 4: একটি নতুন শীর্ষবিন্দু যুক্ত করুন এবং ব্যয় 0 সহ প্রান্তগুলি । ( s , y)ye(s,ye),(t,ye)

পদক্ষেপ 5: সমস্ত ক্ষমতা 1 এ সেট করুন।

এখন থেকে মান 2 এর একটা প্রবাহ অনুসন্ধানের জন্য সর্বনিম্ন খরচ প্রবাহ অ্যালগরিদম চালানোর জন্য, করার ।ই ইxeye


বিশ্লেষণ:

  • থেকে প্রতিটি 2-মূল্যবান প্রবাহ করার একটি পাথ মিলন এবং একটি পাথ ।ওয়াই ই এক্স ই ⇝ এস → ই ইxeyexe⇝s→yexe⇝t→ye
  • পথ, অসংলগ্ন করা যেহেতু প্রত্যেক প্রান্তবিন্দু জন্য আছে আর মাত্র 1 ধারণক্ষমতা চাপ।t(t−,t+)
  • ফিরে আসা পাথ হ'ল দুটি পথ যার দূরত্বের যোগফল সর্বনিম্ন এবং এটি সন্ধানের প্রবাহের ব্যয়ও। এটি আমাদের আউটপুট গ্রাফে যোগ করতে বা অন্যথায় মুছতে দেয়।e

1
নির্দেশিত প্রবাহের হ্রাস এড়াতে উপরের উত্তরে যুক্তিটি বোঝা সহজ। সেখান থেকে একটি সহজ পথ করার একটি নোড ধারণকারী iff একটা পথ থেকে করার এবং একটি পাথ থেকে করার যেমন যে এবং এ ছাড়া নোড টুকরো করা হয় । এটি গুরুতরভাবে অনির্দেশিত ব্যবহার করে। এটি প্রবাহের মাধ্যমে চেক করা যায় এবং ব্যয় সংস্করণটি ন্যূনতম ব্যয়ের প্রবাহের মাধ্যমেও করা যেতে পারে। এক পরীক্ষা করতে পারবেন সেখান থেকে একটি সহজ পথ কিনা করার ধারণকারীt v P v s Q v t P Q v sstvPvsQvtPQvse ete এর মাঝখানে একটি নোড প্রবর্তন করে । e
— চন্দ্র চেকুরী 21

@ চন্দ্রচেকুরী - এটি সঠিক, তবে মনে রাখবেন যে সমস্যাটির দৈর্ঘ্য সীমাবদ্ধতা না থাকলে এটিকে সিদ্ধান্ত নেওয়ার জন্য আরও অনেক সহজ অ্যালগরিদম রয়েছে - এখানে দেখুন
— আরবি

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

@ আরবি: আপনাকে ধন্যবাদ প্রস্তাবিত অ্যালগরিহম কার্যকর হতে পারে যখন l তুলনামূলকভাবে বড় হয় তবে এটি অপেক্ষাকৃত ছোট মানগুলির জন্য suboptimal হয়। আমি অনুমান করি যে আমি টি থেকে এস এবং সিল (l / 2) এর চেয়ে তল (l / 2) এর চেয়ে আরও দূরে যেকোন প্রান্তকে সরিয়ে প্রথমে জি কে ছাঁটাতে পারি।
— লাইয়ার কোগান

1
ধারাবাহিকভাবে সংক্ষিপ্ততম পাথ অ্যালগরিদমকে অভিযোজিত করার চেষ্টা করুন (2 টি পাথের ক্ষেত্রে এখানে সুরবালির অ্যালগরিদমও বলা হয় যা এখানে আগ্রহী)। আপনি এর থেকে কম 2-পাথ খুঁজে পেতে চান (এটা একে ডাকতে উত্তম পরিবর্তে যে যেহেতু এটা সব প্রান্ত জন্য একই) । আমি মনে করি থেকে প্রথমে একটি সংক্ষিপ্ত পথের গাছের গণনা করা এবং তারপরে কিছু যত্ন সহ দ্বিতীয় পাথের গণনা প্রয়োগ করে এটি দক্ষতার সাথে যোগ্য is y y e x e yyyyexey
— চন্দ্র চেকুরী

1

এখানে একটি ভুল উত্তর দেওয়া হয়েছে: এটি এমন কিছু শিখর আউটপুট দেয় যা থেকে পর্যন্ত অ-সরল পাথের অংশ এবং এটি থেকে দৈর্ঘ্যের কোনও সরল পথের অংশ নয় । । উত্তরটি এখনও জিজ্ঞাসকের আবেদনের সাথে প্রাসঙ্গিক হতে পারে, তাই আমি এটি এখানে রেখে দিচ্ছি।t s t ≤ ℓstst≤ℓ

এখানে একটি অ্যালগরিদম যা সময় চলমান হয় (এবং আসলে যখন ছোট হয় তখন এর চেয়ে দ্রুত হয়)।ℓ ℓO(|V|+|E|)ℓ

অ্যালগরিদম থেকে এই বি অনুসন্ধান চালায় যে গভীরতায় বন্ধ । এই এই বি একটি সেট দেয় সব ছেদচিহ্ন এর থেকে পৌঁছানো সর্বাধিক দৈর্ঘ্য অবশ্যই কোন পথ দিয়ে , এবং এটা দূরত্বের নির্ণয় প্রত্যেকের জন্য । তারপরে আমি থেকে একই কাজ এবং সেটটি এবং থেকে দূরত্ব । অবশেষে, ছেদচিহ্ন আপনি যা খুঁজছেন ঠিক হয় । প্রান্তগুলি ( those ঠিক সেই প্রান্তগুলি areℓ V s s ℓ d i s t ( s ,sℓVssℓবনাম ∈ ভী গুলি টি ভি টি টি ভি এর ণ ঠ তোমার দর্শন লগ করা t আমি ণ এন = { বনাম : V ∈ ভী গুলি ∩ ভী টি , ঘ আমি গুলি টন ( গুলি , ভি ) + ডি আই এস টি ( টি ,dist(s,v)v∈VstVttই [ ভি এস ও এল ইউ টি আইVsolution={v:v∈Vs∩Vt,dist(s,v)+dist(t,v)≤ℓ}=(ভ,ইউ)∈ই:ইউ,ভি∈ ভি এস ও এল ইউ টি আই ও এনE[Vsolution]=(v,u)∈E:u,v∈Vsolution)।

এই অ্যালগরিদমের চলমান সময় অবশ্যই কারণ এটি কেবল দুটি বিএফএস করে। কিন্তু চলমান সময় আসলে গ্রাফ আকারের তুলনায় অনেক ছোট হতে হবে যা যখন -radius এর এলাকাগুলোর এবং ছোট।ও ( | ভি এস | + | ভি টি | + | ই [ ভি এস ] | + | ই [ ভি টি ] | ) ℓ এস টিO(|V|+|E|)O(|Vs|+|Vt|+|E[Vs]|+|E[Vt]|)ℓst

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


3
এটি পথটিকে সরল হতে বাধ্য করে না। সরল পাথ গ্রাফ এবং । আপনি আউটপুট এর অংশ হিসাবে ফিরে আসবেন , যদিও মধ্য দিয়ে l = 4 v vt−u−s−v−xl=4vv
— আরবি

সংশোধন @ আরবি করার জন্য ধন্যবাদ। আমার উত্তরটি সম্পাদনা করেছিলাম এটি ভুল বলে মনে রাখবেন।
— মোবিয়াস 13

1

এটি একটি মন্তব্য হিসাবে উদ্দেশ্যে, তবে একটি মন্তব্য হিসাবে পোস্ট করা খুব দীর্ঘ।

আপনার উদ্দেশ্যগুলির জন্য আপনি গ্রাফ স্প্যানার বা এমুলেটরগুলিতেও আগ্রহী হতে পারেন। গ্রাফের একটি স্প্যানার এমন একটি উপগ্রাফ যার কয়েকটি কিনারা রয়েছে তবে প্রায় সংরক্ষিত দূরত্ব রয়েছে। একটি এমুলেটর হ'ল একটি গ্রাফ যার প্রান্তটি ওজন করার অনুমতি দেওয়া হয়।এইচ = ( ভ , ই ′ ) এইচ = ( ভ , ই ′ , ড )G=(V,E)H=(V,E′)H=(V,E′,w)

স্প্যানারদের জন্য সর্বোত্তম ফলাফল হ'ল গ্রাফের দূরত্বের অনুমানের ক্ষেত্রে প্রান্ত এবং +6 এর একটি যুক্ত ত্রুটি error এমুলেটরগুলির জন্য সর্বোত্তম ফলাফল হ'ল প্রান্ত এবং +4 এর একটি যুক্ত ত্রুটি। ত্রুটিটিকে বহুগুণিত করার অনুমতি দেওয়া হলেও আমরা কে মারতে পারি কিনা তা জানা যায়নি ।হে ( ঢ 4 / 3 ) হে ( ঢ 4 / 3 )O(n4/3)O(n4/3)O(n4/3)

যদি এটি কার্যকর মনে হয়, তবে আমি আপনার জন্য প্রাসঙ্গিক নির্মাণগুলি চেষ্টা করে দেখতে পারি dig

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