1. Trang chủ
  2. » Thể loại khác

Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

22 4 0

Đ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 22
Dung lượng 376,37 KB

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

Nội dung

Bài toán người du lịch Bài toán ng ườ i du l ị ch Có n thành phố ñược ñánh sốtừ 1 ñến n, chi phí ñi từthành phố i ñến thành phốj là C[i, j].. Một người ñi du lịch xuất phát từmột thành p

Trang 2

b) UCLN(M, N) = UCLN(M, phần dư của M/N) nếu N<>0

a) F(0) = F(1)= 1

Trang 3

M ộ t ñị nh nghiã ñệ qui ph ả i có 2 thành ph ầ n:

Trang 4

int UCLN(int M, int N)

Trang 5

• V i S là thao tác không ñệqui

Ví dụ: Hàm tìm giá trịphần tửF(n) của dãy Fibonacci

3- Đệ qui phi tuyến:

L ờ i g ọ i ñệ qui ñượ c th ự c hi ệ n bên trong vòng l ặ p

Hàm F()

{

{

Nếu (thỏa ñiều kiện dừng) thì <thực hiện S>

Ngược lại < gọi ñệ qui F >

}

}

Trang 7

T ổ ng quan thu ậ t gi ả i Quay lui (BackTracking)

Tổng quan thuật giải Quay lui (BackTracking)

C ấ u trúc l ờ i gi ả i là m ộ t t ậ p h ợ p có N ph ầ n t ử cùng ki ể u

Xác ñị nh giá tr ị t ừ ng ph ầ n t ử , d ự a trên t ậ p giá tr ị ñề c ử

Để tìm m ộ t l ờ i gi ả i khác, ta quay lui ch ọ n giá tr ị khác cho m ỗ i ph ầ n t ử

Xn

… X3 X2 X1

Trang 8

Bài toán: Li ệ t kê các dãy nh ị phân có ñộ dài n

0 0 1

Cấu trúc lời giải

Xác ñị nh giá tr ị ph ầ n t ử X[i] c ủ a dãy nh ị phân

Trang 9

– Giá trị các phần tử phải phân biệt

– Các tập con phải khác nhau

Trang 10

{ Ghi nh ậ n giá tr ị v ñã ñượ c ch ọ n;

Try( i+1); //G  i ñ qui ñ xác ñ nh ph n t X i+1

B ỏ ghi nh ậ n giá tr ị v ñã chọ n; (n ế u c ầ n)

Trang 11

cho các thành phần trước ñó

Chú ý: Dãy {1, 2, 3} và dãy {2, 1, 3} là khác nhau

H ng gi  i quy  t chung là t  ch  c các bi  n tr  ng thái l u

tr  thông tin ph  c v  cho vi  c ki  m tra:

Try( i + 1 );

F[v] = 0;

} }

}

Trang 12

Thu ậ t gi ả i xác ñị nh b ướ c ñ i th ứ i c ủ a quân Mã

Try(i+1);

x = u-dx[j]; y = v-dy[j];

BC[u,v] = 0;

Trang 13

Bài toán: Đặ t 8 Quân H ậ u trên bàn c ờ qu ố c t ế 8x8 sao cho

các quân H ậ u không ă n nhau

ñường chéo nào ñã có quân hậu:

– Đường chéo ngược: CN[1 15]

Ô(d, c) thuộc ñường CN[c + d - 1]

– Đường chéo xuôi: CX[1 15]

Ô(d, c) thuộc ñường CX[ 8 + c – d]

• Tổchức biến trạng thái ñểghi nhận cộ

ñã có quân hậu: Cot[1 8]

1 2 3

1 2 3

Thu ậ t gi ả i xác ñị nh c ộ t ñặ t quân h ậ u trên dòng d

Thu ậ t gi ả i xác ñị nh c ộ t ñặ t quân h ậ u trên dòng d

DienDong(d+1);

Cot[ c ] = CN[c + d -1] = CX[8+c-d] = 0;

}}

Trang 14

Bài toán người du lịch

Bài toán ng ườ i du l ị ch

Có n thành phố (ñược ñánh sốtừ 1 ñến n), chi phí ñi từthành phố i ñến thành

phốj là C[i, j]

Một người ñi du lịch xuất phát từmột thành phốmuốn ñi thăm các thành phố

khác, mỗi thành phố ñúng một lần rồi quay về nơi xuất phát

Hãy tìm 1 hành trình cho người du lịch ñểtổng chi phí theo hành trình này là ít

1230

Trang 15

1 i

1 i

i , X C X , X X

4

0421

4012

2103

1230

Try( i + 1 );

F[ j ] = 0;

} }

}

Trang 16

• Sminlà tổng chi phí thấp nhấ ñã chọn trong các hành trình tìm ñược Khởi

tạo ban ñầu cho Smin = Cmax * (n + 1), trong ñó Cmax là chi phí lớn nhấ

trong các chi phí C[i, j] ñã cho

1 i

1 i

X C

(i=1, ,n) Xác ñịnh các ñồ vật cần bỏ vào ba lô sao cho tổng

trọng lượng không quá M nhưng có tổng giá trị là lớn nhất

Trang 18

Công d ụ ng

Công dụng

Ý t ưở ng:

– Thêm vào thuật toán quay lui khả năng ñánh giá lời giải tối ưu ở

từng bước xác ñịnh phần tử Xi

– Nếu tại bước thứ i ñánh giá ñược lời giải sẽ không tối ưu thì quay

lui ngay không cần phải tìm tiếp các phần tử khác.

Mô hình ñ ánh giá nhánh c ậ n

trong thu ậ t toán quay lui:

Mô hình ñánh giá nhánh cận

trong thuật toán quay lui:

void Try( int i )

Trang 19

Bài toán người du lịch

Bài toán ng ườ i du l ị ch

Có n thành phố (ñược ñánh sốtừ 1 ñến n), chi phí ñi từthành phố i ñến thành

phốj là C[i, j]

Một người ñi du lịch xuất phát từmột thành phốmuốn ñi thăm các thành phố

khác, mỗi thành phố ñúng một lần rồi quay về nơi xuất phát

Hãy tìm 1 hành trình cho người du lịch ñểtổng chi phí theo hành trình này là ít

4

0421

4012

2103

1230

Ma trận chi phí C

Phân tích:

• Cấu trúc lời giải là dãy: X[1 n]

– X[1] = 1 ñược xem là thành phố xuất phát.

– X[2 n] là một hoán vị của các thành phố 2, ,n.

• Tổ chức ghi nhận lời giải tối ưu:

ñược Khởi tạo ban ñầu cho Smin = Cmax * (n + 1), trong ñó Cmax

là chi phí lớn nhất trong các chi phí C[i, j] ñã cho

Trang 20

T ổ ch ứ c ñ ánh giá l ờ i gi ả i t ạ i b ướ c th ứ i:

Tổ chức ñánh giá lời giải tại bước thứ i:

• Mảng T[1 n]: T[i] chứa tổng chi phí từ X[1] ñến X[i]

• Gọi Cmin là chi phí thấp nhất trong các chi phí C[i, j].

• Sau khi xác ñịnh X[i], nếu ñi tiếp (n – i +1) thành phố nữa thì chi

phí tối thiểu phải là: T[i] + Cmin*(n-i+1)

• Nếu T[i] + Cmin*(n-i+1) < Smin thì lời giải tìm ñược có khả năng

tối ưu, ngược lại thì không tối ưu.

Trang 21

1 Có N gói kẹo, gói thứi có Ai cục kẹo Xây dựng thuật toán chia N gói kẹo

thành hai phần sao cho ñộchênh lệch sốkẹo giữa hai phần là ít nhất Yêu

cầu, không ñược thay ñổi sốkẹo trong mỗi gói ; in ñộchênh lệch nhỏnhấ

giữa hai phần có thể ñược và in danh sách gói kẹo của từng nhóm

2 Cho 1 mảng gồm n các sốnguyên a[1], a[2], , a[n] và một sốnguyên S Hãy

tìm tất cảcác dãy con : 1 <= x1 < x2 < < xk <= n sao cho: a[x1] + a[x2] + +

a[xk] = S

3 Một dây chuyền sản xuất có N (N<=100) vịtrí Có N công nhân, cho biết năng

suất của công nhân thứi mà làm ởvịtrí thứj là Cij (Cij : Integer) Hãy sắp xếp

N công nhân vào N vịtrí sao cho ñạt năng suất cao nhấ

4 Tính sốcách và in tất cảcác cách phân tích sốtựnhiên N >1 thành tổng các

sốtựnhiên nhỏ hơn nó (mọi phân tích chỉkể ñúng một lần: 4+3+1 và 1+4+3

chỉlà một)

5 Hãy tìm tập hợp các dấu '+’, ‘-‘ và không dấu giữa dãy số 123456789 sao cho

ñược một biểu thức có giá trịb ng = N cho trước Ví dụ: N = 280 ta có các tổ

hợp sau: 1+2+345-67+8-9; 1+234-5+67-8-9; 123-4+5+67+89

Trang 22

6 Cho một dãy N sốnguyên Hãy loại bỏkhỏi dãy một sốphần tử ñể ñược mộ

dãy con, có ít nhất 2 phần tử, không giảm và dài nhất In ra dãy con ñó

Ví dụ: N = 10: 2 6 -7 5 8 1 -3 5 15 9

Kết quảtìm ñược dãy con không giảm dài nhất có 4 phần tử:

-7 -3 5 9

7 Một người cha mang theo sốtiền là M vào một cửa hàng ñểmua K món quà

ñểtặng cho các con Trong cửa hàng có N mặt hàng, mặt hàng thứi có giá

tiền là Ai Người cha cần chọn K (K < N) mặt hàng khác nhau ñểlàm quà

sao cho tổng sốtiền của K mặt hàng này là lớn nhất nhưng không lớn hơn

sốtiền mang theo

8 Mỗi hột xí ngầu có 6 mặt, mỗi mặt chứa từ 1 ñến 6 dấu chấm Liệt kê các kế

quảphân biệt có thểcó khi ñổcùng lúc 3 hột xí ngầu, không kểthứtựxuấ

hiện trên các hột xí ngầu, ví dụ{1, 2, 3} và {2, 3, 1} là như nhau

9 Trên bàn cờô vuông 4x4 xếp 8 quân cờg m 4 quân màu ñen và 4 quân

màu trắng sao cho trên mỗi hàng và mỗi cột có ñúng một quân màu ñen và 1

quân màu trắng Thểhiện trên màn hình các cách sắp xếp này

10 Một cơ sởsản xuất cần phân công M nhân viên tham gia thực hiện N hợp

ñồng sản xuất sản phẩm (M >= N) Mỗi nhân viên chỉtham gia thực hiện mộ

hợp ñồng Người ta dựtính rằng, nếu phân công i nhân viên tham gia thực

hiện hợp ñồng j thì có thời gian hoàn thành hợp ñồng là T[i,j] Hãy tìm

phương án phân công mỗi hợp ñồng bao nhiêu nhân viên sao cho tổng số

thời gian hoàn thành N hợp ñồng là ít nhấ

11 Cho ma trận vuông cấp 8 chứa các sốnguyên Tìm giá trị ớn nhất của tổng

8 sốh ng trên ma trận sốtrên sao cho 2 sốh ng bất kỳtrong 8 sốh ng trên

không nằm trên cùng một hàng, không cùng nằm trên một cột và không cùng

n m trên ñường chéo

... viên cho tổng số

thời gian hồn thành N hợp đồng nhấ

11 Cho ma trận vuông cấp chứa sốnguyên Tìm giá trị ớn tổng

8 sốh ng ma trận sốtrên cho sốh ng bất kỳtrong sốh ng

không... suất cao nhấ

4 Tính sốcách in tất cảcác cách phân tích sốtựnhiên N >1 thành tổng

sốtựnhiên nhỏ (mọi phân tích chỉkể ñúng lần: 4+3+1 1+4+3

chỉlà một)

5 Hãy tìm tập...

• Cấu trúc lời giải dãy: X[1 n]

– X[1] = ñược xem thành phố xuất phát.

– X[2 n] hoán vị thành phố 2, ,n.

• Tổ chức ghi nhận lời giải tối

Ngày đăng: 31/03/2022, 23:36

HÌNH ẢNH LIÊN QUAN

Cấu hình một lời giải - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải
u hình một lời giải (Trang 7)
Thuật giải 1: Xác ñịnh giá trị phần tử i của lời giải - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải
hu ật giải 1: Xác ñịnh giá trị phần tử i của lời giải (Trang 7)
Công dụngCông dụng - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải
ng dụngCông dụng (Trang 18)
Mô hình ñánh giá nhánh cận - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải
h ình ñánh giá nhánh cận (Trang 18)
12. Cho một bản gA có M hàng ,N cột (3 ≤ M, N≤ 50), Mỗi phần tử của bảng là - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải
12. Cho một bản gA có M hàng ,N cột (3 ≤ M, N≤ 50), Mỗi phần tử của bảng là (Trang 22)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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