int w=đ nh đ u tiên trong newclr;while wnull && !found.
Trang 1Ch ng 1: M 1: M U U
TS Tr n Cao
N m 2010
Trang 2T BÀI TOÁN N CH NG TRÌNH
T BÀI TOÁN N CH NG TRÌNH
• Mô hình hóa bài toán
– Xác đ nh bài toán c n gi i quy t:
• ph i làm gì?
• làm nh th nào?
– Hình th c hóa bài toán: phát bi u l i bài
toán th c t thành m t bài toán hình th c (hay còn g i là mô hình toán)
Trang 3Ví d 1: Tô màu b n đ th gi i
• M i n c đ u đ c tô m t màu
• Hai n c láng gi ng (có biên gi i chung) thì ph i đ c tô b ng hai
màu khác nhau
Trang 4• Mô hình hóa bài toán tô màu này
– tìm cách bi u di n bài toán m t
cách tr u t ng h n đ g t b
các chi ti t không c n thi t
• Ghi l i t t c các n c trên b n đ
• M i quan h “láng gi ng” gi a hai n c
Trang 6Mô hình hóa
• Ghi nh n t t c các l i đi: AB,
AC, AD, BA, BC, BD, DA, DB,
DC, EA, EB, EC, ED
• Ghi nh n m i liên quan gi acác l i đi:
– Hai l i không th đi đ ng th i
đ c dùng là ít nh t.
Trang 7Nh n xét
• Hai bài toán th c t : “tô màu b n đ th
gi i” và “ đèn giao thông” xem ra r t khác
bi t nhau nh ng sau khi mô hình hóa,
chúng th c ch t ch là m t, đó là bài toán
“tô màu đ th ”.
• Nhi u bài toán cùng mô hình toán
– Gi i mô hình toán å gi i nhi u bài toán hay
gi i m t l p các bài toán
Trang 8Gi i thu t (algorithms)
• Khi đã có mô hình cho m t bài toán:
– Tìm cách gi i quy t bài toán trong mô hình đó
Trang 9Gi i bài toán “ tô màu đ th ”
• Bài toán tô màu cho đ th
• Ý t ng c a Heuristic này là
h t s c đ n gi n: dùng m tmàu đ tô cho nhi u đ nh nh t
có th đ c Nh v y ta có th
"hi v ng" là s màu c n dùng
s ít nh t
Trang 10Áp d ng HEURISTIC Greedy cho
bài toán« « đ đ èn giao thông »
• Tô màu xanh cho các
Trang 12Greedy có cho l i gi i t i u?
5: vàng
2,5 : xanh3: xanh;4: xanh
1,3,4 : đ1: đ ; 2: đ
T i u(th t t c các kh n ng)
Tô theo GREEDY
(xét l n l t theo s th t các
đ nh)
Trang 13Ngôn ng gi và tinh ch t ng
b c
• Mô hình hóa å mô hình thích h p cho bài toán
• Hình th c hoá m t gi i thu t trong thu t ng c a mô
Trang 14{2} for (m i đ nh v ch a tô màu c a G) do
{3} if (v không đ c n i v i m t đ nh nào trong Newclr) then begin{4} đánh d u v đã đ c tô màu;
{5} thêm v vào Newclr;
Trang 15Tinh ch t ng b c
• M nh đ if {3} có th chi ti t hoá h n n a nh sau:
PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: SET );
Trang 16Ki u d li u tr u t ng
• GRAPH và SET ta coi nh t p h p
– Có nhi u cách đ bi u di n t p h p trong ngôn ng l p trình: xem các t p h p nh là
m t danh sách (LIST) các s nguyên bi u
di n ch s c a các đ nh và k t thúc b ng m t giá tr đ c bi t NULL
Trang 17PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: LIST );
var found:boolean;
v,w :integer;
begin
Newclr:= ∅ ;
v:= đ nh đ u tiên ch a đ c tô màu trong G;
while v<>null do begin
found:=false;
w:= đ nh đ u tiên trong newclr;
while( w<>null) and (not found) do begin
Trang 18• Vi c ch n ngôn ng gi t a PASCAL hay t a C hay t a
m t m t ng l p trình nào khác là tùy thu c vào thói
quen c a ng i s d ng, vào s quen thu c v i ngôn
ng l p trình
Trang 19N u ng i dùng quen thu c v i ngôn ng C có th vi t
void GREEDY ( GRAPH& G, SET& Newclr ){
/*1*/ Newclr = ∅;
/*2*/ for (m i đ nh v ch a tô màu c a G)
/*3*/ if (v không đ c n i v i m t đ nh nào trong Newclr){
/*4*/ đánh d u v đã đ c tô màu;
/*5*/ thêm v vào Newclr;
}
}
Trang 20}
Trang 21int w=đ nh đ u tiên trong newclr;
while( w<>null) && (!found)
Trang 22Tóm t t các b c ti p c n v i m t
bài toán
1 Mô hình hoá bài toán b ng m t mô hình toán h c thích
h p.
2 Tìm gi i thu t trên mô hình này
Gi i thu t có th mô t m t cách không hình th c, t c là nó chnêu ph ng h ng gi i ho c các b c gi i m t cách t ng
Trang 23h c cùng v i m t t p h pcác phép toán (operator)
tr u t ng đ c đ nhngh a trên mô hình đó
– Ví d t p h p s nguyêncùng v i các phép toán
h p, giao, hi u là m t ki u
d li u tr u t ng
– ADT là s t ng quát hoá
c a các ki u d li unguyên thu
Trang 24ADT - t ng quát hoá các ki u d li u
– Thêm m t s nguyên vào danh sách.
• N u chúng ta vi t các ch ng trình con th c hi n các phép toán này, thì ta
d dàng thay các m nh đ hình th c trong gi i thu t b ng các câu l nh đ n
gi n
w=ph n t k ti p trong newclr w=NEXT(w,newclr)
w=ph n t đ u tiên trong newclr w=FIRST(newclr)
newclr= ∅ MAKENULL(newclr)
M nh đ hình th c Câu l nh
Trang 26H t ch ng 1