View Full Version : سوال: تبدیل شبه کد الگوریتم فروشنده دوره گرد ( یافتن کوتاه ترین مسیر) به کد C++
EbiPenMan
پنج شنبه 14 آبان 1388, 17:01 عصر
سلام به همگی
من می خوام یه شبه کد که برای الگوریتم فروشنده دوره گرد هست رو به C++ (کوتاه ترین مسیر برای طی کردن همه شهرها و برگشت به مبدا) تبدیل کنم ولی چند تا مشکل دارم :
1. تو این الگوریتم باید اعداد یه آرایه که می تونه اعداد صحیح و همچنین بینهایت باشه رو داشته باشیم.
من چطور باید مقدار بی نهایت رو تو این آرایه که از نوع int هست وارد کنم.
2. و باید بشه اعمال جمع و تفریق رو هم روی بینهایت اجرا کرد.
مثلا : اگه هر عددی با بینهایت جمع و تفریق بشه جواب بی نهایت هست.
3.این سوال بیشتر مربوط به ریاضی و ترکیب ها می شه :
من یه مجموعه مثلا 3 عضوی دارم . می خوام زیر مجموعه های این مجموعه رو با شرط اینکه
جابه جایی عضو ها تاثیر نداره رو بدست بیارم . اگه فرمول ریاضی شو هم بدید حله.
مثلا:
X={2,3,4}
زیرمجموعه ها با توجه به شرط :
{تهی} – {2} – {3} – {4}
{2,3} – {3,4} – {2,4}
{2,3,4}
همین جا از اونایی که راهنمایی خواهند کرد تشکر می کنم.
اگه خواستید تا شبه کدم بزارم.
tdkhakpur
پنج شنبه 14 آبان 1388, 17:21 عصر
من چطور باید مقدار بی نهایت رو تو این آرایه که از نوع int هست وارد کنم.
2. و باید بشه اعمال جمع و تفریق رو هم روی بینهایت اجرا کرد.
مثلا : اگه هر عددی با بینهایت جمع و تفریق بشه جواب بی نهایت هست.
هيچ موقع نميتوان بصورت واقعي به بي نهايت رسيد حداقلش اينه كه آرايه را بصورت پويا در نظر بگيريد.
قبلا اعمال جمع و تفريق با آرايه براي اعداد بزرگ بحث شده است "جمع و تفريق 300 رقمي" جستجو شود.
kashaneh
پنج شنبه 14 آبان 1388, 21:32 عصر
سلام به همگی
من چطور باید مقدار بی نهایت رو تو این آرایه که از نوع int هست وارد کنم.
اگه خواستید تا شبه کدم بزارم.
هيچ موقع نميتوان بصورت واقعي به بي نهايت رسيد حداقلش اينه كه آرايه را بصورت پويا در نظر بگيريد.
قبلا اعمال جمع و تفريق با آرايه براي اعداد بزرگ بحث شده است "جمع و تفريق 300 رقمي" جستجو شود.
دوست عزیز tdkhakpur ، منظور دوستمون از مقدار بی نهایت، یعنی اگر مسیری بین دوشهر نیست براش مقدار بی نهایت بزاریم ... نه اونی که شما برداشت کردین
دوست گرامی برای بی نهایت معمولا عددی منفی یا مقدار 0 رو در نظر می گیرین تا بتونن عملیات ریاضی رو انجام بدن...
در مورد تعداد زیر مجموعه های مجموعه n عضوی هم قبلا در تالار طراحی الگوریتم بحث شده... کمی جستجو کنید...
موفق باشی
tdkhakpur
پنج شنبه 14 آبان 1388, 23:44 عصر
منظور دوستمون از مقدار بی نهایت، یعنی اگر مسیری بین دوشهر نیست براش مقدار بی نهایت بزاریم ... نه اونی که شما برداشت کردین
دوست گرامی برای بی نهایت معمولا عددی منفی یا مقدار 0 رو در نظر می گیرین تا بتونن عملیات ریاضی رو انجام بدن...
مثل اينكه من متوجه نشدم.
خب براي اين كار شما بايد از آرايه اي از ساختار استفاده كنيد نه آرايه به int
#define MAXCITIES 100
typedef struct DoregardSt
{
bool Cities[MAXCITIES];
bool flag;
}Doregard[MAXCITIES];
براي مسير يابي و بررسي مسيرها شما ميتوانيد داخل توابع بازگشتي مقدار flag را بررسي كنيد و مقدار trueو false را براي مشخص نمودن اينكه در اين مسير حركت كرده ايد نشان دهيد.
EbiPenMan
شنبه 16 آبان 1388, 01:17 صبح
اول از دوستان بابت راهنمایی شون تشکر می کنم.
بعد اصلا بهتره که با یه مثال الگوریتمو توضیح بدم .
نکته : دوستان بدونن که این تاپیک در اصل مربوط به C++ می شه ها نه طراحی الگوریتم.
ما این شهرها و مسیر ها رو داریم و از روی اینها یه ماتریس به صورت زیر درست می کنیم :
http://i38.tinypic.com/2njzfhg.jpg
http://i38.tinypic.com/hx0j6a.jpg
حالا ما این ماتریس رو که هم عدد داره و هم علامت بی نهایت می خوایم روش محاسبات انجام بدیم.
مثلا :
[3,4]w[2,4] + w می شه : 7 + بی نهایت = بی نهایت
حالا اصال C++ علامت بی نهایت داره یا نه .
من فقط می خوام یه چیزی تو سی بزارم به جای بی نهایت که بشه روش محاسبه کرد و جواب درست بده.
حتما رفتار بی نهایت رو تو محاسبات می دونید :
بی نهایت + هر عدد= بی نهایت
بی نهایت - هر عدد = بی نهایت
بی نهایت * هر عدد ( به جز 0 ) = بی نهایت
بی نهایت * 0 = 0
حالا من چه کنم.
دوستان اگه شما جواب سوالات منو می دونید یا جای دیگه دیدید خوب بهتر نیست همینجا بگید
و منو به این آدرس و اون آدرس نفرستید.
اگه من می تونستم جای دیگه پیدا کنم که اینجا پست نمی دادم.
دوست عزیر من سایت و گشتم ولی به جوابم برای بدست آوردن زیر مجموعه ها برا اساس اون شرطی که گفتم نرسیدم.
دوستان مقادیر مسافت شهرها و ماتریس باهم برابر نیست(برای یه مثال دیگه بوده) . معذرت می خوام.
tdkhakpur
شنبه 16 آبان 1388, 10:54 صبح
روشي را كه شما داريد روش كار ميكنيد ميشه گفت داريد به نفع cpu كار ميكنيد نه خودتان(يعني كار اصلي را خودتان انجام ميديد.).
خوب چرا از گراف استفاده نميكنيد. فقط كافيست داخل ساختار فواصل بين شهرها و ارتباط آنها را قيد كرده و جسنجو را به عهده cpu قرار بديد.
ولي باز اگر ساير دوستان نظري داشته باشند ارائه بدهند...
mortezamsp
یک شنبه 17 آبان 1388, 09:33 صبح
اگر ميخواي يه بينهايت تعريف كني بايد بجاي ماتريسي از int ها ماتريسي از يك كلاس خاص بسازي كه در اون كلاس خاص ، عمليات گرانبار كردن رو اظافه كني و بجاي بينهايت -1 قرار بدي و در تابع operator+)( چك كني كه اگر يكي از اعداد -1 بود مقدار -1 رو برگردونه.
tomboy
جمعه 27 آذر 1388, 15:17 عصر
ممكنه برنامه تو ويژوال رو هم ايجا بزارين .شديدا نيازمندم
ahmad19
یک شنبه 06 دی 1388, 12:55 عصر
دوست عزيز اگه پاسخ سوالتون رو گرفتيد جوابشو قرار بدين تا بقيه هم استفاده كنن
اگه بتوني سورست رو بذاري خيلي خوب مي شه
ممنون
Naderalios
شنبه 15 خرداد 1389, 17:27 عصر
روشي را كه شما داريد روش كار ميكنيد ميشه گفت داريد به نفع cpu كار ميكنيد نه خودتان(يعني كار اصلي را خودتان انجام ميديد.).
خوب چرا از گراف استفاده نميكنيد. فقط كافيست داخل ساختار فواصل بين شهرها و ارتباط آنها را قيد كرده و جسنجو را به عهده cpu قرار بديد.
ولي باز اگر ساير دوستان نظري داشته باشند ارائه بدهند...
سلام دوستان؛کسی هست که بتونه شبیه به این برنامه را برام آپ کنه،من یه برنامه می خوام که بتونه یک سری NOD تعریف کنه،بعد یه شاخص برای هر NOD بعد درخت پوشانی این گراف را و بعد هم کوتاه ترین مسیر.
ممنون می شم اگه کسی بتونه یه راهنمایی یا سورسی در اختیارم بزاره.....
karami_ahmad
پنج شنبه 18 دی 1393, 16:27 عصر
سلام
من پیچیدگی الگوریتم فروشنده دوره گرد رو هم کاهش دادم میخواستم ببینم میتونم به مقاله ISI تبدیل کنم ؟اگه میتونین جوابتونو به ahmadkarami73@gmail.com بفرستین
ممنونم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.