1. Trang chủ
  2. » Khoa Học Tự Nhiên

CHƯƠNG 4: TẬP HỢP pot

52 1,8K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 279,54 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Element_Type; //Kieu du lieu typedef int Position; typedef struct {Element_Type Data[Max_Length]; Position Last; } Dictionary;.

Trang 3

KHÁI NI M T P H P Ệ Ậ Ợ

• T p h p các thành viên (members) ho c ph n t ậ ợ ặ ầ ử (elements) nh khái ni m toán h c ư ệ ọ

• Các ph n t c a t p h p ph i khác nhau ầ ử ủ ậ ợ ả

• T p h p có th t ho c không có th t ậ ợ ứ ự ặ ứ ự

• Ở đây ta s xét t p h p có th t , t c là trên t p ẽ ậ ợ ứ ự ứ ậ

h p S có các quan h < th a mãn: ợ ệ ỏ

• V i m i a, b trong S thì a<b ho c b<a ớ ọ ặ

• V i m i a, b, c trong S, n u a<b và b<c thì a<c ớ ọ ế

Trang 5

và B ⊆ A – H p c a hai t p h p: A ợ ủ ậ ợ ∪ B={x| x ⊆ A ho c x ặ ∈ B}

– Giao c a hai t p h p: A ủ ậ ợ ∩ B={x| x ∈ A và x ∈ B}

– Hi u c a hai t p h p: A\B={x| x ệ ủ ậ ợ ∈ A và x ∉ B}

Trang 6

CÁC PHÉP TOÁN TRÊN T P H P Ậ Ợ

Phép toán Di n gi i ễ ả

Make_Null_Set(S) T o t p h p S r ngạ ậ ợ ỗ

Empty_Set(S) Ki m tra xem t p h p S có r ng?ể ậ ợ ỗ

Member(X,S) Ki m tra xem X có thu c S?ể ộ

Insert_Set(X,S) Thêm ph n t X vào t p h p Sầ ử ậ ợ

Delete_Set(X,S) Xoá ph n t X trong t p h p Sầ ử ậ ợ

Union(A, B,C) C=A∪B

Intersection(A, B, C) C=A∩B

Difference(A,B,C) C=A\B

Trang 7

CÀI Đ T T P H P Ặ Ậ Ợ

• CÀI Đ T B NG VECT BIT Ặ Ằ Ơ

• CÀI Đ T B NG DANH SÁCH LIÊN K T Ặ Ằ Ế

Trang 8

CÀI Đ T T P H P B NG VECT BIT (1) Ặ Ậ Ợ Ằ Ơ

• Th ườ ng đ ượ c dùng khi t p h p c a ta là 1 t p con c a t p ậ ợ ủ ậ ủ ậ

s nguyên, có giá tr t 0 n-1 Khi đó ta s dùng 1 m ng các ố ị ừ ẽ ả bit có kích th ướ c n đ l u tr t p h p ể ư ữ ậ ợ

Trang 9

CÀI T P H P Đ T B NG VECT BIT (2) Ậ Ợ Ặ Ằ Ơ

• Khai báo

const Max_Length = 100; // giá tr ph n t l n nh t ị ầ ử ớ ấ

typedef int Set [Max_Length];

void Set_Union (Set a,Set b,Set &c){

for (int i=0; i<Max_Length; i++) if((a[i]==1)||(b[i]==1)) c[i]=1;

Trang 10

CÀI Đ T T P H P B NG VECT BIT (3) Ặ Ậ Ợ Ằ Ơ

• T o giao c a 2 t p h p ạ ủ ậ ợ

void Set_Intersection(Set a,Set b,Set &c){

for (int i=0; i<Max_Length; i++)

if ((a[i]==1)&&(b[i]==1)) c[i]=1;

else c[i]=0;

}

• T o hi u c a hai t p h p ạ ệ ủ ậ ợ

void Set_Difference(Set a,Set b,Set &c){

for (int i=0; i< Max_Length; i++)

if ((a[i]==1)&& (b[i]==0)) c[i]=1;

else c[i]=0;

}

Trang 11

CÀI Đ T T P H P B NG VECT BIT (3) Ặ Ậ Ợ Ằ Ơ

• Xét xem m t ph n t có thu c m t t p h p ộ ầ ử ộ ộ ậ ợ hay không?

int Member (int i, Set a) {

if (i<0) || (i>Max_Length-1) return 0;

return a[i]==1;

}

Trang 12

CÀI Đ T T P H P B NG VECT BIT (3) Ặ Ậ Ợ Ằ Ơ

• Cài đ t H p c a 2 t p h p b ng cách dùng ặ ợ ủ ậ ợ ằ hàm member

void Set_Union (Set a,Set b,Set &c){

Trang 13

CÀI Đ T T P H P B NG VECT BIT (3) Ặ Ậ Ợ Ằ Ơ

• Xen m t ph n t i vào trong t p h p a ộ ầ ử ậ ợ void Insert_Set (int i, Set &a){

if ((i<0) || (i>Max_Length-1))

printf(“Gia tri khong hop le\n”);

else a[i]=1;

}

Trang 14

CÀI Đ T T P H P B NG VECT BIT (3) Ặ Ậ Ợ Ằ Ơ

Trang 15

ĐÁNH GIÁ PH ƯƠ NG PHÁP CÀI Đ T Ặ

Trang 16

CÀI Đ T T P H P B NG DSLK(1) Ặ Ậ Ợ Ằ

• Khai báo

typedef int Element_Type;

typedef struct Node

{ Element_Type Data;

Node * Next;

};

typedef Node * Position;

typedef Position Set;

Trang 23

ĐÁNH GIÁ PH ƯƠ NG PHÁP CÀI Đ T Ặ

Trang 25

– Danh sách liên k t có th t ho c không th tế ứ ự ặ ứ ự

– M ng có kích thả ướ ố ịc c đ nh v i con nháy ch đ n v trí cu i ớ ỉ ế ị ốcùng (Tươ ng t cài đ t danh sách b ng m ng) ự ặ ằ ả

– Bả ng băm

Trang 26

CÀI Đ T T ĐI N B NG M NG (1) Ặ Ừ Ể Ằ Ả

• Khai báo

#define Max_Length //So phan tu toi da typedef Element_Type; //Kieu du lieu typedef int Position;

typedef struct

{Element_Type Data[Max_Length];

Position Last;

} Dictionary;

Trang 28

CÀI Đ T T ĐI N B NG M NG (3) Ặ Ừ Ể Ằ Ả

• Hàm ki m tra 1 ph n t có trong t đi n không ể ầ ử ừ ể

int Member(Element_Type X, Dictionary D){

Trang 29

CÀI Đ T T ĐI N B NG M NG (4) Ặ Ừ Ể Ằ Ả

• Thêm 1 ph n t vào t đi n: ầ ử ừ ể

void Insert_Dictionary(Element_Type X, Dictionary &D){

Trang 30

}

Trang 31

ĐÁNH GIÁ PH ƯƠ NG PHÁP CÀI Đ T Ặ

Trang 32

CÀI Đ T T ĐI N B NG B NG BĂM Ặ Ừ Ể Ằ Ả

• BĂM ĐÓNG

• BĂM MỞ

Trang 33

BĂM ĐÓNG (1)

• Đ nh nghĩa: Là m ng m t chi u có B ph n ị ả ộ ề ầ

t M i ph n t đ ử ỗ ầ ử ượ c g i là m t bucket ọ ộ

Ng ườ i ta l u tr d li u trong các bucket ư ữ ữ ệ

• Đ phân ph i d li u vào trong các bucket, ể ố ữ ệ

ng ườ i ta dùng Hàm băm.

• Có nhi u cách đ xác đ nh hàm băm, cách ề ể ị thông d ng nh t là h(x) = x % B ụ ấ

• Giá tr d li u x s đ ị ữ ệ ẽ ượ ư c l u trong T[h(x)]

Trang 35

6 20

Trang 37

CÀI Đ T T ĐI N B NG BĂM ĐÓNG Ặ Ừ Ể Ằ

//Gia dinh gia tri cho o chua su dung

typedef int Element_Type;

typedef Element_Type Dictionary[B];

Trang 38

CÀI Đ T T ĐI N B NG BĂM ĐÓNG (2) Ặ Ừ Ể Ằ

Trang 39

CÀI Đ T T ĐI N B NG BĂM ĐÓNG (3) Ặ Ừ Ể Ằ

Trang 40

• Thêm ph n t vào t ầ ử ừ đi n ể

void Insert_Dictionary(Element_Type X, Dictionary &D){

Trang 41

CÀI Đ T T ĐI N B NG BĂM ĐÓNG Ặ Ừ Ể Ằ

(5)

• Xóa t ra kh i t ừ ỏ ừ đi n ể

void Delete_Dictionary(ElementType X, Dictionary &D){

if (Empty_Dictionary(D))

printf("\nTu dien rong!");

else { // tìm X và n u tìm th y m i xoá (đ t ph n t = Deleted)ế ấ ớ ặ ầ ử

int Found =0;

int i=0, init =H(X);

while ((i<=B-1)&&(D[(i+init)%B]!=Empty) && (!Found))

Trang 43

Bài t p ậ

• Cài đ t hàm Full_Dictionary và ặ Empty_Dictionary

Trang 44

B NG BĂM M Ả Ở

• Đ nh nghĩa: Là m t m ng m t chi u có B ph n t M i ị ộ ả ộ ề ầ ử ỗ

ph n t là m t con tr , tr đ n m t danh sách liên k t l u ầ ử ộ ỏ ỏ ế ộ ế ư

tr d li u M i danh sách liên k t đ ữ ữ ệ ỗ ế ượ c g i là m t bucket ọ ộ

Trang 45

CÀI Đ T T ĐI N B NG BĂM M (1) Ặ Ừ Ể Ằ Ở

Node* Next;

};

typedef Node* Position;

typedef Position Dictionary[B];

Trang 46

CÀI Đ T T ĐI N B NG BĂM M (2) Ặ Ừ Ể Ằ Ở

Trang 47

CÀI Đ T T ĐI N B NG BĂM M (3) Ặ Ừ Ể Ằ Ở

//Duyet tren ds duoc tro boi D[H(X)]

while((P->Next!=NULL) && (!Found))

if (P->Next->Data==X) Found=1;

else P=P->Next;

return Found;

}

Trang 48

CÀI Đ T T ĐI N B NG BĂM M (4) Ặ Ừ Ể Ằ Ở

• Thêm m t ph n t vào t đi n (xen v ộ ầ ử ừ ể ào đ u ầ lô)

void Insert_Dictionary(Element_Type X, Dictionary &D){

Trang 49

CÀI Đ T T ĐI N B NG BĂM M (4) Ặ Ừ Ể Ằ Ở

Trang 50

CÀI Đ T T ĐI N B NG BĂM M (5) Ặ Ừ Ể Ằ Ở

void Delete_Dictionary(Element_Type X, Dictionary &D){

Trang 52

Thank you

Ngày đăng: 31/07/2014, 16:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w