الگوریتم مقیاس‌دهی گبو برای کوتاه‌ترین مسیرها از یک مبدأ واحد

از testwiki
پرش به ناوبری پرش به جستجو

الگو:ویکی‌سازی الگوریتم مقیاس دهی گبو برای کوتاهترین مسیرها از یک مبدأ واحدالگو:سخالگو:انگلیسی الگوریتم مقیاس دهی ابتدا با در نظر گرفتن فقط بالاترین بیت یک مقدار ورودی مناسب (مانند وزن یال‌ها)، مسئله را حل می‌کند. سپس جواب اولیه را با نگاه کردن به دو بیت اول پالایش می‌کند. به همین ترتیب بیت‌های بیشتر و بیشتری را در نظر می‌گیرد و در هر بار جواب را پالایش می‌کند تا این که همه بیت‌ها در نظر گرفته شوند و جواب صحیح محاسبه شود. دراین مسئله، الگوریتم محاسبه کوتاهترین مسیرها از یک مبدأ واحد را به وسیله مقیاس دهی وزن یال‌ها بررسی می‌کنیم. گراف جهت دار G=(V,E) با وزن‌های صحیح غیر منفی w داده شده‌است. فرض کنید W=max(u,v)Ew(u,v) هدف، ایجاد الگوریتمی است که در زمان O(ElgW) اجرا می‌شود. فرض می‌کنیم که همه راس‌ها از مبدأ قابل دستیابی‌اند. الگوریتم در نمایش دودویی وزن‌های یال‌ها، هربار یک بیت را به ترتیب با ارزش‌ترین بیت، وارد حل مسئله می‌کند. به ویژه فرض کنید k=[lg(W+1)]+1، تعداد بیت‌ها در نمایش دودویی W باشد و برای i=1,2,...,k wi(u,v)=[w(u,v)/2ki]. به عبارت دیگر، wi(u,v) شکل "کوچک شده " w(u,v)است که به وسیله با ارزش‌ترین i بیت، w(u,v) تولید می‌شود. (بنابراین برای همه(u,v)E داریم، wk(u,v)=w(u,v). بعنوان مثال اگر k=5 وw(u,v)=<00100>=4باشد آنگاه w3(u,v)=<001>=1 است. Ai(u,v) را به عنوان وزن کوتاهترین مسیر از راس u به راس v با استفاده از تابع وزن wi تعریف می‌کنیم؛ بنابراین برای همه u,vV داریم Ak(u,v)=A(u,v). برای مبدأ sالگوریتم مقیاس دهی ابتدا وزنهای کوتاهترین مسیر A1(u,v) را برای همه vV. محاسبه می‌کند، سپس برای همه vV وA2(u,v). را محاسبه می‌کند و به همین ترتیب ادامه می‌دهد تا این که برای همه δ_k (u_,v)v∈V محاسبه شود. فرض می‌کنیم |E|>=|V1| است و خواهیم دید که محاسبه Ai به اندازه O(E)، و لذا کل الگوریتم به اندازه O(kE)=O(ElgW) زمان می‌برد.

مراحل
  • فرض کنید برای همه راس‌های vV داریمA(s,v)<=|E| نشان دهید برای همه می‌توانیم A(s,v) را در زمان O(E) محاسبه کنیم.
  • نشان دهید برای همهvV می‌توانیم A1(s,v) را در زمان O(E) محاسبه کنیم.الگو:سخ

اکنون به محاسبه Ai از Ai1 می‌پردازیم.

  • ثابت کنید برای هر i=2,3,....,k داریم wi(u,v)=2wi1(u,v)+1 یا wi(u,v)=2wi1(u,v).

سپس ثابت کنید که برای همه vV داریم 2Ai1(s,v)<=Ai(s,v)<=2Ai1(s,v)+|V|1

  • برای i=2,3,...,k و (u,v)E تعریف زیر را داریمالگو:سخ

checkwi(u,v)=wi(u,v)+2Ai1(s,u)2Ai1(s,v) ثابت کنید برای i=2,3,...,k و همهu,vV, checkwi(u,v) یال (u,v) یعنی مقدار وزن جدید آن یال، یک عدد صحیح غیر منفی است.

  • اینک Ai(s,v) را به عنوان وزن کوتاهترین مسیر از s به v با استفاده از تابع وزن checkwi تعریف می‌کنیم. ثابت کنید برای i=2,3,...,k و همه vV داریم
Ai(s,v)=checkAi(s,v)+2Ai1(s,v)

و

checkAi(s,v)<=|E|
  • نشان دهید چگونه برای همهvV می‌توان Ai(s,v) را از Ai1(s,v) در زمان O(E) به دست آورد و نتیجه بگیرید که برای همه A(s,v) , O(E) می‌تواند در زمان O(ElgW) محاسبه گردد.

منابع

الگو:پانویس

پیوند به بیرون