الگوریتم مقیاس دهی گبو برای کوتاهترین مسیرها از یک مبدأ واحد
(به انگلیسی: (Gabow's algorithm (single-source shortest paths)
الگوریتم مقیاس دهی ابتدا با در نظر گرفتن فقط بالاترین بیت یک مقدار ورودی مناسب (مانند وزن یالها)، مسئله را حل میکند. سپس جواب اولیه را با نگاه کردن به دو بیت اول پالایش میکند. به همین ترتیب بیتهای بیشتر و بیشتری را در نظر میگیرد و در هر بار جواب را پالایش میکند تا این که همه بیتها در نظر گرفته شوند و جواب صحیح محاسبه شود.
دراین مسئله، الگوریتم محاسبه کوتاهترین مسیرها از یک مبدأ واحد را به وسیله مقیاس دهی وزن یالها بررسی میکنیم. گراف جهت دار
با وزنهای صحیح غیر منفی
داده شدهاست. فرض کنید
هدف، ایجاد الگوریتمی است که در زمان
اجرا میشود. فرض میکنیم که همه راسها از مبدأ قابل دستیابیاند. الگوریتم در نمایش دودویی وزنهای یالها، هربار یک بیت را به ترتیب با ارزشترین بیت، وارد حل مسئله میکند. به ویژه فرض کنید
، تعداد بیتها در نمایش دودویی
باشد و برای
. به عبارت دیگر،
شکل "کوچک شده "
است که به وسیله با ارزشترین
بیت،
تولید میشود. (بنابراین برای همه
داریم،
.
بعنوان مثال اگر
و
باشد آنگاه
است.
را به عنوان وزن کوتاهترین مسیر از راس
به راس
با استفاده از تابع وزن
تعریف میکنیم؛ بنابراین برای همه
داریم
. برای مبدأ
الگوریتم مقیاس دهی ابتدا وزنهای کوتاهترین مسیر
را برای همه
. محاسبه میکند، سپس برای همه
و
. را محاسبه میکند و به همین ترتیب ادامه میدهد تا این که برای همه δ_k (u_,v)v∈V محاسبه شود. فرض میکنیم
است و خواهیم دید که محاسبه
به اندازه
، و لذا کل الگوریتم به اندازه
زمان میبرد.
- مراحل
- فرض کنید برای همه راسهای
داریم
نشان دهید برای همه میتوانیم
را در زمان
محاسبه کنیم.
- نشان دهید برای همه
میتوانیم
را در زمان
محاسبه کنیم.
اکنون به محاسبه
از
میپردازیم.
- ثابت کنید برای هر
داریم
یا
.
سپس ثابت کنید که برای همه
داریم
- برای
و
تعریف زیر را داریم
ثابت کنید برای
و همه
,
یال
یعنی مقدار وزن جدید آن یال، یک عدد صحیح غیر منفی است.
- اینک
را به عنوان وزن کوتاهترین مسیر از
به
با استفاده از تابع وزن
تعریف میکنیم. ثابت کنید برای
و همه
داریم
و
- نشان دهید چگونه برای همه
میتوان
را از
در زمان
به دست آورد و نتیجه بگیرید که برای همه
,
میتواند در زمان
محاسبه گردد.