حل مساله 8 وزیر با جستجوی تابو به صورت زیر انجام میشه:
ابتدا یک حالت جواب رو به صورت تصادفی به دست می آریم، مثه این:
1و5و2و3و4و6و8و7
تو این لیست هر عدد نمایان گر سطر وزیر تو ستون مربوطه است. مثلا 1اولی یعنی وزیر 1 ام تو سطر 1 و ستون 1 هست و 5 یعنی وزیر دوم تو سطر 5 و ستون 2 هست و ال آخر.
بعد یک لیست می سازیم که شامل تمام جا به جایی های ممکن بین هر دو وزیر باشه. این لیست رو واسه مساله 8 وزیر می تونیم به صورت یک آرایه 2 بعدی بسازیم که 4 تا ستون داره و n*(n-1)/2 ستون و به صورت زیر دو ستون اول رو پر می کنیم:
2 | 1 |
3 | 1 |
... | ... |
8 | 1 |
3 | 2 |
4 | 2 |
... | ... |
8 | 2 |
4 | 3 |
5 | 3 |
... | ... |
... | ... |
... | ... |
... | ... |
8 | 7 |
حالا ستون سوم این جدول رو به عنوان لیست تابو و ستون چهارم رو به عنوان برازش این جابه جایی (در هر سطر دو ستون اول و دوم نشانگر جابه جایی بین وزیر ها است که با این شماره مشخص شده اند) در نظر می گیریم. به این صورت که هر جابه جایی ای که از این جدول صورت می گیره تو لیست تابو ، مقدار تابو تنیور را قرار می دهیم و پس از هر حرکت مقادیر تابو تنیور و برازش را به روز رسانی می کنیم. تا جایی که برازش صفر(هیچ وزیری با هم برخورد ندارند) را به دست آوریم
sagi1362@gmail.com