190 likes | 495 Views
Áp dụng giải thuật di truyền vào bài toán tô màu đồ thị. Mục lục. Giới thiệu bài toán Khởi tạo quần thể Đánh giá độ thích nghi Đột biến đa điểm Thuật toán MSPGCA. Giới thiệu b ài toán. Cho G=(V,E) là một đồ thị vô hướng . V={1,2,3….n}, |V|=n, |E|=m
E N D
Ápdụnggiảithuật di truyềnvàobàitoántômàuđồthị
Mụclục Giớithiệubàitoán Khởitạoquầnthể Đánhgiáđộthíchnghi Độtbiếnđađiểm Thuậttoán MSPGCA
Giớithiệubàitoán Cho G=(V,E) làmộtđồthịvôhướng. V={1,2,3….n}, |V|=n, |E|=m là 1 sốnguyêndươngchỉsốmàuđểtôcácđỉnhcủađồthị (k<=n) Khiđó k màusẽ chia V thành k tập con ,i=1,2…,k saocho 2 đỉnhliềnkề(cócạnhnốigiữa 2 đỉnh) khôngthuộccùng 1 tập con Bàitoántômàuchocácđỉnhcủađồthịlàbàitoántìm k nhỏnhấtcóthể.
Giớithiệubàitoán Số màutốithiểu k củađồthịđượckíhiệulà X(G) 2 đỉnhliềkềx,ycùngthuộc 1 tập (cùngmàu) đượcgọilà 2 đỉnhđốilập, cạnh(x,y) đượcgọilàcạnhđốilập, màu r tô 2 đỉnhđóđượcgọilàmàuđốilập. Đốivớibàitoántômàuchúng ta sẽsử dung thuậttoán di truyềnđểgiải. Thuậttoán di truyềnlấy ý tưởngtừquátrìnhtiếnhóatrongtựnhiêndựatrên 2 quátrìnhlàlaighépvàđộtbiếnsẽlàmthayđổicácthông tin mãhóa.
Khởitạoquầnthể Đốivớibàitoántômàu ban đầu ta quyướcứngvớimỗiđỉnhthuộcđồthịtươngứngvới 1 gen Vớimỗicáchtômàusẽđượcmãhóabởi 1 cấutrúcgọilànhiễmsắcthể Tậphợpcáccáchtômàutạonênmộtquầnthể
Đánhgiáđộthíchnghi Đối vớimỗi 1 nhiễmsắcthểsẽthểhiệnmộtgiátrị (đượcgọilàgiátrị fitness) nósẽđánhgiáchấtlượngcủacáchtômàuđượcmãhóabởinhiễmsắcthểđó Hàm fitness(kýhiệulà) Hàm fitness đượcđánhgiábởisốcáccặpđỉnhđốilậptrongđồthị Hàm fitness đượcđịnhnghĩanhưsau:
Đánhgiáđộthíchnghi = Với ad(i) làtậpcácđỉnhliềnkềcủa j Hàm conflict đượcđịnhnghĩanhưsau: Conflict(i,j) = Khihàm fitness nhậngiátrịbằng 0 tứclàđãtìmthấycáchtômàuphùhợp.
Ban đầu ta khởitạo 1 quầnthểngẫunhiênbằngcáchtômàungẫunhiêncácnútkhácnhaubởicácmàukhácnhau. Trongquátrìnhtiếnhóasẽcónhữngnhiễmsắcthểhợplệvàkhônghợplệ(cócáccặpđỉnhđốilập) vìvậychúng ta sẽxâydựngmộtquátrìnhquảnlýchophépkiểmtrađượcnhữngnhiễmsắcthểnàokhônghợplệbằngcáchkiểmtracáccặpđỉnhliềnkềlàcùngmàu hay khôngcùngmàuvàsửachữacácnhiễmsắcthểkhônghợplệ. Quátrìnhquảnlýnhưvậylàrep_op.
Độtbiếnđađiểm Xâydựng 1 operator vềđộtbiếnđađiểmgiúpgiảmgiátrị fitness (giảmcáccặpđỉnhđốilập )củacácnhiễmsắcthểvàlàmcácnhiễmsắcthể ở đờikếtiếptốthơn Saurấtnhiềuquátrìnhđộtbiến ta cóthểtìmđượclờigiảitốiưuchobàitoán.
Độtbiếnđađiểm Bước 1: lựachọn 1 nhiễmsắcthểngẫunhiêntrongquầnthể Bước 2: giảmsốmàu Vídụcóthểthayđổi 2 trongsốnhữngmàusắcđượcsửdụng ở 2 đỉnhkhácnhaukhôngliềnkềbằngnhữngmàusắcgiốngnhau Bước 3:Nếu nhiễmsắcthểmàkhônghợplệcóthểsửdụngđếnquytrìnhquảnlýrep_op
Độtbiếnđađiểm Việcsửdụngquytrìnhquảnlýrep_opphaiđảmbảoluôngiảmsốlượngmàusắcsửdụng . • Bước 5: Nếusaucùng ta thuđượccáchtômàuhợplệthìsẽtrảlạinhiễmsắcthểvàoquầnthể Nếukhôngthì quay lạibước 1 • Sauquátrìnhtiếpdiễnnhưvậy ta cóthểthuđượclờigiảitốiưu
Thuậttoán MSPGCA Bước 1:Tạo 1 nhómcácnhiễmsắcthể(quầnthể) Bước 2:Áp dụngthuậttoán GAGCA(là 1 thuậttoán di truyềnđơngiảnnhằmtạora 1 quầnthểtốhơnquầnthể ban đầu) Bước 3:Sử dụngquytrìnhrep_opđốivớinhữngnhiễmsắcthểchưahợplệ. Bước 4:tính toáncácgiátrị fitness trongnhómcácnhiễmsắcthểtrên
Thuậttoán MSPGCA Bước 5: tìmranhiễmsắcthểtốnhất Bước 6:sử dụngvònglặptừ 1 đếnmax_iteration: +cholaighépgiữa 2 nhiễmsắcthểbấtkỳtrongquầnthể +sửdụngquytrìnhrep_opđốivớicácnhiễmsắcthể con sinhramàchưahợplệ +chọnnhiễmsắcthể con tốtnhấttừtậpcácnhiễmsắcthể con mớiđượcsinhra
Ápdụngthuậttoánđộtbiếnđađiểmchocácnhiễmsắcthể.Ápdụngthuậttoánđộtbiếnđađiểmchocácnhiễmsắcthể. Tínhgiátrị fitness chocácnhiễmsắcthểtrongquầnthể Cảithiệnchấtlượngcủacácnhiễmsắcthể ở thếhệtiếpsauđó Bước 7:thu đượcnhiễmsắcthểtốtnhất hay chínhlàcáchtômàutốtnhấtsửdụngítmàunhất.