III. Tìm lời giại 3.1 Tính giại được
3.1 Tính giại được
3.1 Tính giại được
ª Định nghĩa “bao đóng”:
• Cho máng suy dieên (M,F), và A là moơt taơp con cụa M. Ta có theơ thây raỉng có duy nhât moơt taơp hợp B lớn
nhât ⊆ M sao cho bài toán A → B là giại được, và taơp hợp B naăy được gĩi là bao đóng cụa A tređn máng
(M,F).
• Ký hieơu bao đóng cụa A là • Closure(A).
ª Định lý:
• Tređn moơt máng suy dieên (M,F), bài toán A → B là giại
được khi và chư khi B ⊆ Closure(A).
ª Meơnh đeă:
• Tređn moơt máng suy dieên (M,F), giạ sử A, B là hai taơp con cụa M. Ta có các đieău sau đađy là tương đương:
• (1) B ⊆ Closure(A).
• (2) Có moơt dãy quan heơ D = {f1, f2, ..., fk} ⊆ F thỏa
các đieău kieơn :
(a) D áp được tređn A.
ª Thuaơt toán tìm bao đóng cụa A tređn máng (M,F).
• 1. B ← A; 2. Repeat B1 ← B;
for f ∈ F do
if ( f đôi xứng and Card (M(f) \ B) ≤ r(f) ) or (f khođng đôi xứng and M(f) \ B ⊆ v(f) )
then
begin
B ← B ∪ M(f);
F ← F \ {f}; // lối f khỏi laăn xem xét sau end;
Until B = B1; 3. Closure(A) ← B;
3.2 Tìm lời giại
3.2 Tìm lời giại
ª Meơnh đeă:
• Dãy quan heơ suy dieên D là moơt lời giại cụa bài toán
A → B khi và chư khi D áp dúng được tređn A và
D(A) ⊇ B.
⇒ Đeơ tìm moơt lời giại ta có theơ làm như sau: Xuât phát từ
giạ thiêt A, ta thử áp dúng các quan heơ đeơ mở roơng daăn taơp các biên được xác định (được biêt); và quá trình naăy táo ra moơt sự lan truyeăn tính xác định tređn taơp các biên cho đên khi đát đên taơp biên B.
ª Thuaơt toán tìm moơt lời giại cụa bài toán A → B .
• 1. Solution ← empty;
// Solution là dãy các quan heơ sẽ áp dúng
• 2. if B ⊆ A then
begin
Solution_found ← true;
// biên Solution_found = true khi
// bài toán là giại được
goto bước 4;
end
else
3.
3. Repeat
Aold ← A; Chĩn ra moơt f ∈ F chưa xem xét;
while not Solution_found and (chĩn được f) do begin
if ( f đôi xứng and 0 < Card (M(f) \ A) ≤ r(f) ) or (f khođng đôi xứng and ∅ ≠ M(f) \ A ⊆ v(f)) then begin A ← A ∪ M(f); Solution ← Solution ∪ {f}; end; if B ⊆ A then Solution_found ← true;
Chĩn ra moơt f ∈ F chưa xem xét;
4.
4. if not Solution_found then
Bài toán khođng có lời giại;
else
Solution là moơt lời giại;
° Nhaơn xét:
• khi caăn trình bày quá trình giại (hay bài giại) ta có theơ xuât phát từ lời giại tìm được dưới dáng moơt dãy các quan heơ đeơ xađy dựng bài giại.
• Lời giại (nêu có) tìm được trong thuaơt toán tređn chưa chaĩc là moơt lời giại tôt. Ta có theơ boơ sung theđm cho thuaơt toán ở tređn moơt thuaơt toán đeơ tìm moơt lời giại tôt từ moơt lời giại đã biêt nhưng chưa chaĩc là tôt.
ª Thuaơt toán tìm moơt lời giại tôt cụa bài toán A → B .
• Giạ sử {f1, f2, ..., fm} là moơt lời giại cụa bài toán A→ B. Tìm moơt lời giại tôt cho bài toán.
• 1. D ← {f1, f2, ..., fm};
2. for i=m downto 1 do
if D \ {fi} là moơt lời giại then D ← D \ {fi};
3. D là moơt lời giại tôt.
° Lưu ý: ta có theơ tìm moơt lời giại tôt từ moơt lời giại biêt trước baỉng cách laăn lượt xem xét các quan heơ trong taơp lời giại đã biêt và chĩn ra các quan heơ đeơ đưa vào moơt lời giại mới sao cho trong lời giại mới naăy khođng theơ