1. Trang chủ
  2. » Luận Văn - Báo Cáo

CƠ SỞ LÝ THUYẾT THUẬT TOÁN QUAY LUI, TRÌNH BÀY THUẬT TOÁN VÀ CÀI ĐẶT TRÊN C CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN QUAY LUI ĐỂ TÌM ĐƯỜNG ĐI TRONG MÊ CUNG

12 4,6K 236
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

Tiêu đề Cơ sở lý thuyết thuật toán quay lui, trình bày thuật toán và cài đặt trên c chương trình ứng dụng thuật toán quay lui để tìm đường đi trong mê cung
Tác giả Nguyễn Thị Ngọc Sương, Hồ Văn Trọng, Phùng Quý Châu, Phùng Thị Tuyết, Đỗ Thị Hiền, Lê Thị Ánh Tuyết, Nguyễn Thị Thảo, Trần Thị Ngân
Người hướng dẫn Th.s Nguyễn Thành Thủy
Trường học Đại học Kinh tế Đà Nẵng
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Báo cáo
Năm xuất bản 2012
Thành phố Đà Nẵng
Định dạng
Số trang 12
Dung lượng 188 KB

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

Nội dung

CƠ SỞ LÝ THUYẾT THUẬT TOÁN QUAY LUI, TRÌNH BÀY THUẬT TOÁN VÀ CÀI ĐẶT TRÊN C CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN QUAY LUI ĐỂ TÌM ĐƯỜNG ĐI TRONG MÊ CUNG

Trang 1

 

Môn học: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Tên Đề Tài: CƠ SỞ LÝ THUYẾT THUẬT TOÁN QUAY LUI, TRÌNH BÀY THUẬT TOÁN VÀ CÀI ĐẶT TRÊN C CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN QUAY LUI

ĐỂ TÌM ĐƯỜNG ĐI TRONG MÊ CUNG

Nhóm 7: Nguyễn Thị Ngọc Sương – 37H11K14.1

Hồ Văn Trọng – 37H11K14.1 Phùng Quý Châu – 37H11K14.1 Phùng Thị Tuyết – 37H11K14.1

Đỗ Thị Hiền – 37H11K14.1

Lê Thị Ánh Tuyết – 37H11K14.1 Nguyễn Thị Thảo – 36H11K14.1

Trang 2

MỤC LỤC

Table of Contents

MỤC LỤC 2

LỜI CẢM ƠN 3

I GIỚI THIỆU 4

1 Lời mở đầu 4

3 Tìm hiểu về mê cung 5

4 Tìm hiểu về thuật toán quay lùi (Đệ quy) 6

4.1 Định nghĩa : 6

4.2 Các bước cơ bản để giải quyết bài toán đệ quy 6

II GIẢI QUYẾT VẤN ĐỀ 6

1 Cách tìm đường đi trong thuật toán mê cung: 6

Yêu Cầu như sau: 6

2 Mô phỏng cách tìm 7

Bảng mô phỏng dữ liệu nguồn 7

Đồ thị mô phỏng 8

3 Thuật toán đệ quy mê cung: 9

4 Giải thích sơ bộ các lệnh trong thuật toán 10

III KẾT LUẬN - ĐÁNH GIÁ 11

1 Đánh giá về đề tài 11

2 Kết luận 11

IV PHỤ LỤC 12

1 Hướng dẫn chạy demo thuật toán 12

2 Tài liệu tham khảo 12

Trang 3

LỜI CẢM ƠN

Trong thời gian làm báo cáo nhóm chúng em gặp không ít khó

khăn khi chưa biết hướng giải quyết bài toán trong thời gian xây

dựng giải thuật hay khi viết chương trình Nhưng được sự hướng

dẫn tận tình của thầy Nguyễn Thành Thủy nên nhóm đã giải quyết

được các vấn đề từ nhỏ đến lớn đến khi hoàn thành được yêu cầu

của đề tài Bên cạnh đó cùng với sự giúp đỡ của bạn bè nên nhóm

cũng đã học hỏi được nhiều kinh nghiệm để hoàn thành hơn nữa đề

tài Cuối lời nhóm chúng em xin chân thành gửi lời cảm ơn đến

thầy Nguyễn Thành Thủy đã giúp đỡ chúng em hoàn thành tốt đề

tài này!

Xin chân thành cảm ơn!

Trang 4

I GIỚI THIỆU

1 Lời mở đầu

Trong cuộc sống có nhiều vấn đề buộc ta phải lựa chọn hoặc tìm ra những phương án để giải quyết được vấn đề Trong toán học cũng thế, để giải một bài toán đòi hỏi ta phải chọn được phương án giải quyết bài toán một cách tối ưu để thu được kết quả mong muốn Trong lập trình cũng thế

ta phải tìm ra được giải thuật đúng để làm nền tảng xây dựng chương trình chạy đúng kết quả bài toán hay đề tài của người yêu cầu đặt ra Chẳng hạn như bài toán mê cung, đòi hỏi ta phải xây dựng thuật toán tìm được lối đi

từ cửa vào để đến được lối ra Trong khi đó, có thể đứng trước nhiều ngã

rẽ và phải tìm được lối đi cho đến khi thoát khỏi mê cung

2 Đặc tả đề tài

 Yêu cầu

o Chương trình đọc mê cung từ tập tin văn bản(INPUT.TXT)

 Mục tiêu đạt được

o Tìm đường đi đến cửa ra (OUTPUT.TXT)

 Môi trường làm việc

o Ngôn ngữ lập trình C

Trang 5

3 Tìm hiểu về mê cung.

a) Định nghĩa:

Mê cung là một hệ thống gồm nhiều hành lang nối với nhau Bài toán tìm đường đi trong mê cung là đứng từ vị trí s ( bên trong mê cung hoặc cửa vào ) tìm đường đi đến vị trí e ( cửa ra hoặc bên trong

mê cung)

Nếu biểu diễn mê cung bằng đồ thị, trong đó các hành lang là các cạnh, còn các giao điểm của chúng là các đỉnh thì ta có bài toán tìm đường đi trong đồ thị Lưu ý rằng ta không biết trước sơ đồ của mê cung

b) Ví dụ:

Bài toán đặt ra là: Hãy vào bằng cửa A và tìm đường ra ở cửa B?

B A

Trang 6

4 Tìm hiểu về thuật toán quay lùi (Đệ quy)

4.1 Định nghĩa :

- Thuật toán quay lùi là quá trình xử lý bằng cách gọi lại chính bản thân

nó để giải quyết chương trình con

4.2 Các bước cơ bản để giải quyết bài toán đệ quy

- Tìm điều kiện dừng của bài toán

- Tìm dạng tổng quát của bài toán

II GIẢI QUYẾT VẤN ĐỀ

1 Cách tìm đường đi trong thuật toán mê cung:

Khởi tạo lối đi đầu tiên tại cửa vào, sau đó dùng thuật toán (thuật toán quay lùi ) để tìm lối đi Trong khi tìm lối đi, lối đi có thể đi được nếu không phải là tường ( giá trị 0 trong ma trận ) Ngược lại là tường buộc phải quay lui Trong lúc đi, tại những điểm liên thông đều được đánh dấu Khi không thể đi được thì phải quay lui tại điểm vừa đi qua và cứ như thế cho đến khi đi đến cửa ra

Yêu Cầu như sau:

Dữ liệu nguồn file INPUT.TXT In ra file OUTPUT.TXT

5

1 5

0 2 5 0 0

0 0 0 1 0

0 0 0 0 1

0 0 1 0 3

0 0 0 0 0

1  2  4  3  5

1  2  4  5

1  3  5

Trang 7

Quy tắc dữ liệu nguồn:

- Dòng đầu tiên là số đỉnh

- Dòng thứ hai là đỉnh bắt đầu và đỉnh kết thúc

- Các dòng tiếp theo là mê cung(đường đi)

Quy tắc trong mê cung trên

- 0 là đường có thể đi được

- 1 là đường không thể đi được

2 Mô phỏng cách tìm

Theo đề ta có 5 đỉnh, các đỉnh như sau:

Bảng mô phỏng dữ liệu nguồn

Đỉnh 1 2 3 4 5

1 0 2 5 0 0

2 0 0 0 1 0

Trang 8

5 0 0 0 0 0

 Đỉnh 1 liên thông với đỉnh 2 giá trị là 2

 Đỉnh 1 liên thông với đỉnh 3 giá trị là 5

 Đỉnh 2 liên thông với đỉnh 4 giá trị là 1

 Đỉnh 3 liên thông với đỉnh 5 giá trị là 1

 Đỉnh 4 liên thông với đỉnh 3 giá trị là 1

 Đỉnh 4 liên thông với đỉnh 5 giá trị là 3

Đồ thị mô phỏng

Như vậy kết quả đường đi từ đỉnh 1 đến đỉnh 5 sẽ là:

- 1 => 2 => 4 => 3 => 5

- 1 => 2 =>4 => 5

- 1 => 3 => 5

1

3

2 2

5

1

1

1 3

Trang 9

3 Thuật toán đệ quy mê cung:

#include<stdio.h>

#include<conio.h>

int a[100][100],x[100],n,xp,kt,i=0,j=0;

void xuly( int k, int dem )

{

int v;

FILE *f;

f=fopen("c://file//OUTPUT.TXT","a");

for(v=1;v<=n;v++)

{

if( a[x[k-1]][v]!=0 )

{

dem = dem +1;

x[k] = v;

if(x[k] == kt)

{

for( i=1; i<=dem; i++ )

{

fprintf(f,"%d ",x[i]);

}

Trang 10

}

}

main()

{

FILE *f;

if( (f=fopen("c://file//INPUT.TXT","r"))==NULL )

printf("khong tim thay file o vi tri c://file/INPUT.TXT ");

else

{

fscanf(f,"%d%d%d",&n,&xp,&kt);

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

fscanf(f,"%d",&a[i][j]);

x[1]=xp;

f=fopen("c://file//OUTPUT.TXT","w");

xuly(2,1);

fclose(f);

}

getch();

}

4 Giải thích sơ bộ các lệnh trong thuật toán

- Lệnh FILE *f dùng để gọi tập tin văn bản vào chương trình

- Lệnh fprintf(f,”%x”,x[i]) dùng để in vào file khởi tạo(OUTPUT.TXT)

- Lệnh fclose ( f ) là lệnh đóng tập tin vừa gọi

- Ký hiệu n là số đỉnh

- Ký hiệu xp là đỉnh xuất phát

Trang 11

III KẾT LUẬN - ĐÁNH GIÁ

1 Đánh giá về đề tài

Ưu điểm

- Thuật toán ngắn gọn

- Liệt kê được tất cả các đường đi ra mê cung Nhược điểm

- Không tối ưu về đường đi ra mê cung Hướng phát triển

Tương lai sẽ hướng đến những trò chơi game đồ hoạ trí tuệ - giải trí

2 Kết luận

Bài toán tìm đường đi trong mê cung là bài toán rất hay, nó khơi dậy khả năng toán học cho người học, đồng thời nó cũng kích thích được óc sáng tạo và tư duy định hướng cho người học

Bài toán này đã cuốn hút được sự quan tâm của nhiều người bởi tính đa

Trang 12

Trong đề tài này, mặt dù nhóm em đã dành nhiều thời gian nghiên cứu, thảo luận, và được sự hướng dẫn chu đáo của Thầy Nguyễn Thành Thuỷ nhưng do khả năng có hạn nên chắc chắn đề tài không tránh khỏi thiếu sót Kính mong Thầy có lời góp ý, bổ sung, chỉnh sửa để đề tài được hoàn thiện hơn

IV PHỤ LỤC

1 Hướng dẫn chạy demo thuật toán

 Copy file INPUT.TXT vào ổ đĩa C/file

 Chạy demo

2 Tài liệu tham khảo

 [1] Đỗ Xuân Lôi - Cấu trúc dữ liệu và giải thuật (KHKT 2006

 [2] Nguyễn Trung Trực - Cấu trúc dữ liệu (T.p HCM 1997) [Thư viện]

 [3] Lê Minh Trung - Bài tập cấu trúc dữ liệu và thuật toán [Thư viện]

 [4] Niclaus Wirth - Algorithms + Data Structure = Programs (Prentice Hall, 1976) [5] Tuần tin Echip

 [5] Giáo trình Cấu trúc dữ liệu và giải thuật của thầy Nguyễn Thành Thủy- Khoa Thống kê tin học, trường Đại học kinh tế Đà Nẵng.

 [6] Tham khảo các tài liệu và code trên mạng.

Ngày đăng: 13/04/2013, 10:08

HÌNH ẢNH LIÊN QUAN

Bảng mô phỏng dữ liệu nguồn - CƠ SỞ LÝ THUYẾT THUẬT TOÁN QUAY LUI, TRÌNH BÀY THUẬT TOÁN VÀ CÀI ĐẶT TRÊN C CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN QUAY LUI ĐỂ TÌM ĐƯỜNG ĐI TRONG MÊ CUNG
Bảng m ô phỏng dữ liệu nguồn (Trang 7)
Đồ thị mô phỏng - CƠ SỞ LÝ THUYẾT THUẬT TOÁN QUAY LUI, TRÌNH BÀY THUẬT TOÁN VÀ CÀI ĐẶT TRÊN C CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN QUAY LUI ĐỂ TÌM ĐƯỜNG ĐI TRONG MÊ CUNG
th ị mô phỏng (Trang 8)

TỪ KHÓA LIÊN QUAN

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

w