1. Trang chủ
  2. » Trung học cơ sở - phổ thông

MỘT số bài TOÁN về cây KHUNG NHỎ NHẤT

13 60 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 13
Dung lượng 53,99 KB

Nội dung

Bài toán cây khung nhỏ nhất là một trong những bài toán tối ưu thuộc phần lý thuyết đồ thị. Như chúng ta biết, có 2 thuật toán để giải quyết bài toán này, đó là thuật toán Prim và thuật toán Kruskal, trong cuốn Tài liệu Giáo khoa chuyên Tin (Quyển 2) đã trình bày rất kỹ thuật toán, hướng dẫn cách cài đặt cụ thể và đánh giá độ phức tạp tính toán. Trong bài viết này, tôi xin đưa ra một số bài tập áp dụng thuật toán.

MỘT SỐ BÀI TOÁN VỀ CÂY KHUNG NHỎ NHẤT Bài toán khung nhỏ toán tối ưu thuộc phần lý thuyết đồ thị Như biết, có thuật tốn để giải tốn này, thuật tốn Prim thuật toán Kruskal, Tài liệu Giáo khoa chuyên Tin (Quyển 2) trình bày kỹ thuật tốn, hướng dẫn cách cài đặt cụ thể đánh giá độ phức tạp tính tốn Trong viết này, tơi xin đưa số tập áp dụng thuật toán Bài tốn 1: Vịng đua F1- Mã bài: NKRACING Singapore tổ chức đua xe Công Thức vào năm 2008 Trước đua diễn ra, xuất số đua đêm trái luật Chính quyền muốn thiết kế hệ thống kiểm sốt giao thông để bắt giữ tay đua phạm luật Hệ thống bao gồm số camera đặt tuyến đường khác Để đảm bảo tính hiệu cho hệ thống, cần có camera dọc theo vịng đua Hệ thống đường Singapore mô tả dãy nút giao thơng đường nối hai chiều (xem hình vẽ) Một vịng đua bao gồm nút giao thơng xuất phát, đường bao gồm tuyến đường cuối quay trở lại điểm xuất phát Trong vòng đua, tuyến đường qua lần, theo hướng Chi phí để đặt camera phụ thuộc vào tuyến đường chọn Các số nhỏ hình vẽ cho biết chi phí để đặt camera lên tuyến đường Các số lớn xác định nút giao thông Camera đặt tuyến đường nút giao thông Bạn cần chọn số tuyến đường cho chi phí lắp đặt thấp đồng thời đảm bảo có camera dọc theo vịng đua Viết chương trính tìm cách đặt camera theo dõi giao thông cho tổng chi phí lắp đặt thấp Dữ liệu • Dịng chứa số nguyên n, m ( ≤ n ≤ 10000, ≤ m ≤ 100000) số nút giao thông số đường nối Các nút giao thơng đánh số từ đến n • m dịng mơ tả đường nối, dòng bao gồm số nguyên dương cho biết hai đầu mút tuyến đường chi phí lắp đặt camera Chi phí lắp đặt thuộc phạm vi [1, 1000] Kết In số nguyên tổng chi phí lắp đặt thất tìm Ví dụ Dữ liệu: 67 125 233 145 454 564 633 Kết Thuật toán: Ban đầu ta giả sử đặt camera tuyến đường, cần tìm cách bỏ số camera với tổng chi phí giảm lớn Tập hợp tuyến đường bỏ không chứa chu trình chứa tạo vịng đua khơng giám sát, suy bỏ nhiều n-1 camera n-1 tuyến đường n-1 tuyến đường khung đồ thị Để giảm nhiều chi phí cần tìm khung lớn đồ thị để bỏ camera cạnh khung Chương trình: {$mode objfpc} const fi='nkracing.inp'; fo='nkracing.out'; max=10000; maxm=100000; vc=100000000; var f:text; n,m,kq:longint; x,y,c:array[0 maxm+1]of longint; {a,ts:array[0 maxm*2+1]of longint;} goc:array[0 max+1]of longint; chon:array[0 maxm+1]of longint; dd:array[0 max+1]of boolean; procedure doc; var i,j:longint; begin assign(f,fi); reset(f); readln(f,n,m); kq:=0; for i:=1 to m begin read(f,x[i],y[i],c[i]); kq:=kq+c[i]; end; close(f); end; procedure viet; var i,j:longint; begin assign(f,fo); rewrite(f); writeln(f,kq); close(f); end; function laygoc(u:longint):longint; begin while goc[u]-1 u:=goc[u]; laygoc:=u; end; procedure doi(var i,j:longint); var tg:longint; begin tg:=i; i:=j; j:=tg; end; procedure sort(d1,c1:longint); var i,j,gt:longint; begin if d1>=c1 then exit; i:=d1; j:=c1; gt:=c[(c1+d1)div 2]; repeat while c[i]>gt inc(i); while c[j]

Ngày đăng: 09/03/2021, 14:11

TỪ KHÓA LIÊN QUAN

w