پیاده سازی الگوریتم فلوید-وارشال مسدود شده برای حل مسئله کوتاه ترین مسیر همه جفت در سی شارپ

در پست های قبلی (اول، دوم) الف را پیاده سازی کرده ایم الگوریتم فلوید-وارشال (در چهار نوع) و الف الگوریتم بازسازی مسیرها. در این پست‌ها ما از طریق مبانی مسئله کوتاه‌ترین مسیر همه جفت، نمایش داده‌ها در حافظه، موازی‌سازی، بردارسازی و اینکه چگونه می‌توانیم الگوریتم‌ها را با ویژگی‌های داده تطبیق دهیم، راه خود را طی کردیم.

در این پست ما به سفر خود ادامه خواهیم داد و روشی جدید و کارآمدتر برای حل مشکل کوتاه‌ترین مسیر همه جفت‌ها را بررسی می‌کنیم. با این حال، این بار، علاوه بر به کارگیری قابلیت های برداری و موازی CPU، از کش های L1، L2 و L3 نیز استفاده خواهیم کرد.

جالب به نظر می رسد؟ سپس بیایید یک کد بنویسیم 🙂

خوب، نه چندان سریع – قبل از کاوش در تئوری و کد پشت الگوریتم، پیشنهاد می کنم چند لحظه وقت بگذارید و اطلاعات اولیه در مورد “حافظه های CPU” را اصلاح کنید.

اگر درک کاملی در مورد موضوع دارید، می توانید از آن صرف نظر کنید. اگر تصمیم گرفتید آن را بخوانید (چون فقط کنجکاو هستید یا می خواهید اصول اولیه را اصلاح کنید) لطفاً در نظر بگیرید که اطلاعات زیر یک مرور کلی ساده شده است.

– یادداشت نویسنده

کش چیست؟

به احتمال زیاد چیزی در مورد حافظه نهان CPU شنیده اید، حداقل در تبلیغات تراشه های جدید اینتل یا AMD یا در طول هر نوع بحث سخت افزاری با دوستان یا همکاران. اینجا، ما قرار نیست …

Source link