Kiểm tra tính khả tuần tự bằng đồ thị có hướng

Một phần của tài liệu bài giảng về cơ sở dữ liệu nâng cao (Trang 36)

Để xác định rằng một bộ xếp lịch nào đó là đúng, chúng ta phải chứng minh rằng mỗi lịch biểu S được nó cho phép đều có đặc tính khả tuần tự. Vì vậy chúng ta cần có một phép kiểm tra đơn giản

về tính khả tuần tự của một lịch biểu.

Thuật toán 3.3. Kiểm tra tính khả tuần tự một lịch biểu S

Vào: Một lịch biểu S của một tập các giao dịch T1, T2,…, Tk

Ra: Khẳng định S có khả tuần tự hay không. Nếu có thì đưa ra một lịch biểu tuần tự tương đương với S.

Phương pháp:

Xây dựng một đồ thị có hướng G (được gọi là đồ thị tuần tự hóa) có các nút là các giao dịch Ti.

Để xác định các cung của đồ thị G, gọi (a1, a2,…, aN) là tập các bước cơ bản trong S. Trong đó mỗi

ai là một thao tác có dạng

Tj: Lock A hoặc Tj: Unlock A

Nếu aj là thao tác kiểu Unlock A thì tìm thao tác ap kế tiếp sau aj có dạng Ts: Lock A. Nếu có

một cặp thao tác như thế và s j, chúng ta vẽ một cung từ Tj đến Ts (Tj Ts). Cung này có ý nghĩa

là trong một lịch biểu tuần tự tương đương với S, Tj phải thực hiện trước trước Ts.

Nếu G có một chu trình thì S là bất khả tuần tự, ngược lại nếu G không có chu trình thì S là khả

tuần tự và chúng ta tìm một thứ tự tuyến tính cho các giao dịch cho Ti bằng một quá trình gọi là sắp

xếp topo của đồ thị G như sau:

Sắp xếp Topo đồ thị có hướng G không có chu trình

Ta biết rằng trong G phải có một nút Tj nào đó không có cung đến, nếu không G có một chu

trình. Liệt kê Tj rồi loại Tj ra khỏi G. Sau đó lặp lại quá trình này trên đồ thị còn lại cho đến khi

không còn nút nào nữa. Thứ tự các nút được liệt kê trong danh sách là một thứ tự tuần tự của các

giao dịch. Thứ tự đó tạo nên lịch biểu tuần tự tương dương với S.

Một phần của tài liệu bài giảng về cơ sở dữ liệu nâng cao (Trang 36)

Tải bản đầy đủ (PDF)

(45 trang)