Professional Documents
Culture Documents
Decrease-and-Conquer
pg. 1
CSCE 411
Decrease-and-Conquer
4.3 Các Thuật Toán Để Tạo Các Đối Tượng Kết Hợp
Tạo hoán vị
Ta giả định tập hợp bên dưới có các phần tử cần hoán vị chỉ đơn giản là tập hợp các
số nguyên từ 1 đến n; tổng quát hơn,có thể được hiểu là chỉ số của các phần tử trong tập
hợp phần tử n {a1, ..., an}. Kỹ thuật giảm dần sẽ gợi ý vấn đề gì tạo ra tất cả n! hoán vị
của {1, ..., n}? Vấn đề nhỏ hơn là tạo ra tất cả (n - 1)! hoán vị. Giả sử rằng vấn đề nhỏ
hơn được giải quyết, chúng ta có thể có được một giải pháp cho giải pháp lớn hơn bằng
cách chèn n vào mỗi n có thể vị trí giữa các phần tử của mọi hoán vị của n - 1 phần tử.
Tất cả các hoán vị thu được trong thời trang này sẽ khác biệt .Và tổng số của chúng sẽ
được n (n - 1)! = n!. Do đó, chúng tôi sẽ có được tất cả các hoán vị của {1, ..., n}. Ta chèn
n trong các hoán vị được tạo trước đó từ trái sang phải hoặc phải sang trái. Nó chỉ ra rằng
có ích khi bắt đầu với việc chèn n vào 12. . . (n - 1) bằng cách di chuyển từ phải sang trái
và sau đó chuyển hướng mỗi khi mới hoán vị của {1, ..., n - 1} cần được xử lý.
4.4 Các Thuật Toán Giảm Dần Theo Yếu Tố Liên Tục
Tìm kiếm nhị phân
Tìm kiếm nhị phân là một thuật toán hiệu quả đáng kể để tìm kiếm trong một mảng
được sắp xếp. Nó hoạt động bằng cách so sánh khóa tìm kiếm K với phần tử trung gian
pg. 2
CSCE 411
Decrease-and-Conquer
mảng A [m]. Nếu họ phù hợp, thuật toán dừng lại; mặt khác, hoạt động tương tự được lặp
lại đệ quy cho nửa đầu của mảng nếu K <A [m] và cho nửa sau nếu K>A [m].
Thuật toán Brinary search (A [0..n - 1], K)
+ Thực hiện tìm kiếm nhị phân không lợi nhuận
+Đầu vào: Một mảng A [0..n - 1] được sắp xếp theo thứ tự tăng dần và khóa tìm kiếm K
+ Kq: Một chỉ mục của phần tử mảng bằng K hoặc −1 nếu không có phần tử như vậy.
pg. 3
CSCE 411
Decrease-and-Conquer
Vấn đề Josephus
Vấn đề là một người nổi tiếng Nhà sử học người Do Thái tham gia và ghi lại
cuộc nổi dậy của người Do Thái chống lại người La Mã. Và cuộc chiến thua có hơn 40
người chết hãy xác định số người sống xót thứ j. Vì vậy, hãy để n người được đánh số từ
1 đến n đứng thành một vòng tròn. Bắt đầu đếm số nghiệt ngã với người số 1, chúng tôi
loại bỏ mọi người thứ hai cho đến khi chỉ còn một người sống sót.
+Nếu n là chẵn, tức là, n = 2k : J (2k) = 2J (k) − 1.
+Trường hợp của một số lẻ n (n> 1), tức là, n = 2k + 1 : J (2k + 1) = 2J (k) + 1.
pg. 4