Tải bản đầy đủ (.ppt) (78 trang)

Thiết kế CSDL chương 3(2009)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (173.76 KB, 78 trang )

NG I SO N: ƯỜ Ạ
PHAN UĐẦ
CHÖÔNG III: TAÄP HÔÏP
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
1. TẬP HP & MÔ HÌNH DỮ LIỆU TẬP HP
TẬP HP

Các phép toán trên tập hợp:

Giao

Hợp

Trừ

Tích Đề-Cac
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
MÔ HÌNH DỮ LIỆU TẬP HP
Các phép toán trên mô hình dữ liệu tập hợp
1. Phép hợp:
Procedure Union (A, B : set; var C : set);
2. Phép giao:
Procedure Intersection(A, B : set; var C : set);
3. Phép trừ:
Procedure Difference(A, B: set ;var C : set);
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Mô hình dữ liệu tập hợp
Các phép toán trên mô hình dữ liệu tập hợp


4. Xác đònh một phần tử có thuộc tập hợp hay không
Function Member(x:element; A : set) : boolean;
5. Phép xen vào
Procedure Insert(x:element; var A : set);
6. Phép loại bỏ
Procedure Delete(x : element; var A : set);
7. Tìm phần tử nhỏ nhất (phần tử lớn nhất)
Procedure Min (A : set; var x: element);
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
3. CÀI ĐẶT TẬP HP

Bằng vecto bit

Bằng danh sách (mảng, con trỏ)

Bằng danh sách được sắp thứ tự
NG I SO N:
PHAN U
Caứi ủaởt taọp hụùp bụỷi vectụ bit
Const n= 100;
Type set = array[1..n] of boolean;
Var A, B, C : set;
x: 1..n;
NG I SO N:
PHAN U
Khụỷi taùo taọp hụùp
Procedure Initialize ( var A: Set);
Var i: integer;
Begin

For i:= 1 to n do
a[i]:= fasle;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Phép lấy hợp của hai tập Avà B.
Procedure Union(A, B:set; var C : set);
Var i:integer;
Begin
For i:=1 to n do C [i]:=A[i] or B[i];
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Procedure Intersection(A, B : set; var C : set);
Procedure Intersection(A, B:set; var C : set);
Var i:integer;
Begin
For i:=1 to n do C [i]:=A[i] and B[i];
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Phép toán tìm hiệu của tập hợp A và B
Procedure Diference(A, B:set; var C : set);
Var i:integer;
Begin
For i:=1 to n do C [i]:=(A[i] and not B[i]);
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Function Member(x:element; A : set) : boolean;

Function Member(x:element; A : set) : boolean;
Begin
Menber:=a[x];
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Procedure Insert(x:element; var A : set);
Procedure Insert(x:element; var A : set);
Begin
A[x]:=true;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
7. Tìm phaàn töû nhoû nhaát
Function Min (A : set; x: element):element;
Var i:integer; ok:boolean;
Begin
i:=1;
ok:=true;
While (i<=n) and not ok do
If a[i]=true then ok:=true
Else i:=i+1;
if i<=n then Min:=i
else Min:=0;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Cài đặt tập hợp bởi danh sách
1. Cài đặt tập hợp bởi mảng:
Const maxsize=…;

Type SET = Record
last : integer;
element: array[1 .. maxsize] of elementtype;
End;
NG I SO N:
PHAN U
Khụỷi taùo taọp hụùp roóng
Procedure Initialize(Var A:Set);
Begin
a.last := 0;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Kiểm tra một phần tử x có trong tập hợp không?
Function Member(x:elementtype; A : set) : boolean;
Var i:integer; ok:boolean;
Begin
i:=1; ok:=false;
while (i<=a.last) and not ok do
if a.element[i]=x then ok:=true
Else i:=i+1;
Member:=ok;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Thêm một phân tử x vào tập hợp
Procedure Insertion(x:elementtype; Var A:Set);
Begin
If (a.last = maxsize) and ( not member(x, A)) then
Begin

A.last:=a.last+1;
a.Element[a.last]:= x;
End
Else write(‘Khong them duoc’)
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Phép lấy hợp của hai tập Avà B.
Procedure Union(A, B:set; var C : set);
Var i:integer;
Begin
Initialize(C);
For i:=1 to a.last do Insertion(A.element[i], C);
For i:=1 to b.last do
if not member(b.element[i], C) then
Insertion(b.element[i], C)
End;
NG I SO N:
PHAN U
Pheựp toaựn tỡm giao cuỷa hai taọp hụùp
Procedure Intersection(A, B:set; var C : set);
Var i:integer;
Begin
Initialize(C);
For i:=1 to b.last do
if member(b.element[i], A) then
Insertion(b.element[i], C)
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ

Phép toán tìm hiệu của tập hợp A và B
Procedure Diference(A, B:set; var C : set);
Var i:integer;
Begin
Initialize(C);
For i:=1 to a.last do
If not member(a.element[i], B) then
Insertion(a.element[i], C);
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Phép toán tìm phần tử nhỏ nhất của tập hợp
Function Min(A:set):elementtype;
Var i:integer;
Begin
Min:=0;
For i:=1 to a.last do
If min >a.element[i] then Min:=a.element[i];
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
2. Cài đặt tập hợp bởi danh sách liên kết.
Type pointer = ^ Cell;
Cell = record
element : elementtype;
Next : pointer;
End;
NG I SO N:
PHAN U
Khụỷi taùo taọp hụùp roóng

Procedure Initialize(var S: pointer);
Begin
S := nil;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Kiểm tra một phần tử x có trong tập hợp không?
Function Member(x:elementtype; S: Pointer) : boolean;
Var p: pointer; ok:boolean;
Begin
p: = s; ok:=false;
while (p<> nil) and not ok do
if p^.element=x then ok:=true
Else p:= p^.next;
Member:=ok;
End;
NG I SO N: ƯỜ Ạ
PHAN UĐẦ
Thêm một phân tử x vào tập hợp
Procedure Insertion(x:elementtype; Var S: pointer);
Var p: pointer;
Begin
If not member(x, S) then
Begin
new(p);
p^.elememt:=x;
p^.next:=s^.next;
s^.next:=p;
End
Else write(‘Khong them duoc’)

End;

×