نام این الگوریتم بر اساس نام ارائهدهنده هلندی آن، یعنی اِدسخِر دایکسترا انتخاب شدهاست. در منابع فارسی آن را به شکلهای دِیکسترا، دکسترا، دایکسترا، دایجسترا، دیجسترا، دایجکسترا و دیجکسترا هم نوشته شده است، ولی جیمِ آن در تلفظ هلندی آن تلفظ نمیشود، لذا دو مورد اول صحیح هستند.
الگوریتم دایجسترا راهکاری برای پیدا کردن کموزن مسیر از رأس مشخص آغاز به بقیه رئوس در گراف جهتدار و وزندار (با وزنهای مثبت) میدهد. وزن یک مسیر در گراف وزندار برابر مجموع وزن یالهای آن است. جهتدار نبودن یالها هم مشکلی ایجاد نمیکند و میتوان برای یالهای غیر جهتدار دو یال فرض کرد.
لگوریتم
فرض کنید 1≤s≤n که در آن رأس s رأس آغاز است و فرض کنید:
dist(r)=0
و به ازای هر v≠r:
dist(v)=∞
فرض کنید مجموعهی T برابر رئوسی باشد که تا کنون کم وزنترین مسیر آنها را پیدا کردهایم. این الگوریتم در هر مرحله نزدیکترین رأس به s را که تا کنون به مجموعهی T اضافه نشده را انتخاب میکند (مثلا x) و آن را به مجموعهی T اضافه میکند و فاصلهی دیگر رأسها را با توجه به فاصلهی x بروز میکند. به ازای هر رأس v خارج T:....
بهتره بدونید همین نرم افزار با دو زبان نوشته شده--سی پلاس و سی شارپ
نرمافزار Visual Studio، نرمافزاری توسعه یافته برای برنامه نویسان کامپیوتر است که توسط شرکت نرمافزاری Microsoft تولید شدهاست. تمرکز اصلی این نرمافزار از اولین نسخههای آن تاکنون بر روی خصوصیت IDE بودن آن است که به برنامهنویس اجازه میدهد تا برنامههای کاربردی مستقل، وبگاه، برنامههای کاربردی وب یا سرویسهای وب را که بر روی تعدادی از PlatFormهای پشتیبانی شده توسط Microsoft .NET Framework (البته برای تمام نسخههای بعد از ویژوال استودیو ۶) همچنین Platformهایی مانند Microsoft Windows servers and workstations, PocketPC Smartphones و World Wide Web browsers اجرا میشوند را براحتی ایجاد نماید. از جمله قابلیتهای اضافه شده که در آخرین ویرایش ارائه شدهاست میتوان به Silverlight اشاره کرد که یک Web Application framework بسیار پیشرفته جهت توسعه نرمافزارهای کاربردی تحت وب میباشد.
سی شارپ دارای یک سامانه نوع یکپارچهاست که به آن CTS میگویند. این بدان معناست که تمام انواع، شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند. به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث میبرد. بخاطر کارایی، انواع اولیه (و انواع مقداری) بهطور داخلی فضایی برای آنها بر روی پشته در نظر گرفته میشود
انواع داده
CTS دادهها را به دو نوع تقسیم میکند:
نوع مقداری (Value Type)
نوع مرجعی (Refrence Type)
انواع دادهای توده سادهای از داده میباشند. نمونههای انواع دادهای نه هویت مرجعی دارند و نه مفاهیم مقایسه مراجع را. برای مقایسه برابری یا عدم برابری انواع دادهای، خود مقدار دادهها را با یکدیگر مقایسه میکنیم مگر اینکه عملگرهای مشابه دوباره تعریف شده باشند. مقادیر دادههای مرجعی همیشه یک مقدار پیشفرض دارند و همیشه میتوانند ایجاد یا کپی شوند. یکی دیگر از محدودیتهای انواع دادهای این ات که آنها نمیتوانند از یکدیگر مشتق شوند (ولی میتوانند اشتراکاتی داشته باشند) و هم چنین نمیتوانند در سازنده مقدار دهی اولیه شوند. مثالی از انواع دادهای، بعضی از انواع اولیه مانند int و float و char و System.DateTime میباشند. در مقابل، انواع مرجعی مفهوم تعریف مرجعی را دارند (که در آن هر نمونه از نوع مرجع، بهطور ذاتی از دیگر نمونهها جدا میشود، حتی اگر داده هر دو نمونه یکی باشد). این دقیقاً نمونه مشابه مقایسه تساوی یا عدم تساوی دادههای مرجعی است، که در آن آزمایش برای مرجعها از دادهایها سریع تر است. در کل نه همیشه امکان تعریف نمونه مرجعی وجود دارد و نه امکان کپی یا نمایش مقادیر مقایسه دو نمونه؛ ولی به هر حال انواع مرجعی خاص میتوانند این اعمال را از طریق سازندههای عمومی یا اجرای واسطهای مشابه (مثل ICloneable یا IComparable) انجام دهند. نمونههایی از انواع مرجعی، اشیاء، System.String و Sysmet.Array میباشند. هر دو نوع داده قابلیت انعطاف توسط تعریف به وسیله کاربر را دارند. در واقع وقتی ما نوع دادهای را به تابع ای ارسال میکنیم، آدرس داده نیز فرستاده میشود. البته این امر پیشفرض است ولی برای دادههای مثل آرایه، رشتهای، آدرس فرستاده میشود و ارسال از نوع مرجع میشود