- Bao caovedoi tac
Thuật tốn kiểm tra tính khă tuần tự của lịch biểu
Đe xác định rang một bộ lập lịch nào đĩ là đúng, chúng ta cliửng minh rằng mỗi lịch bieu được nĩ cho phép đều cĩ đặc tính khả tuần tự.
Đẻ kiểm tra đồ thị cĩ chu trinh hay khỏng và tim ra một lịch biểu tuần tự tương đương Vc là thực hiện việc sẳp xếp topo nếu lịch biềii này là khả tuần tự), ta ciụa Irẻn các lập luận sau:
Nếu đồ thị khơng cĩ chu trinh, ta luơn tim được một đinh khơng cĩ cung vào. Trong ma trận kề, đinh đĩ tương ứng với cột chứa tồn phần từ 0. Loại bĩ đỉnh này khỏi tập đinh (trong ma trận kề là loại bỏ cột này và dịng cĩ cùng chí số vĩi nĩ). Lặp lại quá trình này cho đến khi xảy ra một trong hai trường hợp sau:
1. Neu tập đinh là rỗng, nghĩa là tập đình đồ thị khơng cỏ chu trình, ta kết luận lịch biềii đã cĩ là khả tuần tự, thứ tự tim được theo quy tắc trên là thứ tự các giao dịch trong lịch biểu tuần tự tương đương.
2. Nếu tập đinh khơng khác rỗng mà ta khơng tim được cột nào chừa tồn giá trị 0, nghĩa là đồ thị cĩ chu trinh, kết luận lịch biểu đà cho bất khả tuần tự.
T/ĩuậí tốn 5,3: Thuật tốn kiểm tra đồ thị cỏ chu trình khơng, Neu khơnỊỊ cĩ chu trình thì chỉ ra thứ iự thực hiện các giao dịch trong iịch biểu tuần tự (ương đivơng.
Declare var
Index, {thứ tự các giao dịch trong lịch biểu tương đương} i, j : byte; {chỉ số định danh các giao dịch} begin
{tập họp đinh} {Số đỉnh Ị
Ị máng chửa thử tự các giao dịch trong lịch SetofVer: set o f byte:
N u m O f V e r : byte;
O d e r ; array [byte] o f byte: bieu tuần tự tưoim đưong}
Fouiid: Bolean {Biến kiểm tra Ị
A: arravfbyte^bvte] o f 0... 1; {Máng chứa ma trận kề} Begin Index: ] While SetOíVer // 0 do Begin Forj; ‘ 1 to NumOfVer do I f j e SetO fV erthen Begin Found: true F o r i : “^l to N u m O fV e rd o if ( i e SetOfVer) and then Foundi^false
If Found then Begin SetOfVer - SetOfVer Order[lndex]: j Index : Index^ 1 Thốt khịi vịnu lặp j End End If SetOfVer // o then Begin
7 hơng báo lịch bieu khả tuần tự For i: 1 to NuniO íV er do in ra Order[i] End
Else thơng báo lịch biếu bất khả tuần tự End
Dùng hai chương trình; Ma trận kề, kiểm tra tính khả tuần tự của lịch biểu, để mơ phỏng thuật tốn. Chương trình hoạt động như sau;