Bài tập cấu trúc dữ liệu giải thuật đồ thị

7 1K 9
Bài tập cấu trúc dữ liệu giải thuật   đồ thị

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

Thông tin tài liệu

BÀI TẬP CHƯƠNG ĐỒ THỊ Phần đồ thị Bài Thực tìm kiếm BFS, DFS đồ thị sau đưa thứ tự đỉnh, vẽ tìm kiếm thu (đỉnh bắt đầu A) (đỉnh bắt đầu m) Thứ tự duyệt theo thứ tự ABC Bài Đưa thứ tự topological đồ thị thứ theo cách : • Dùng DFS • Dùng BFS Bài Minh họa cách lưu trữ đồ thị sau sử dụng ma trận kề danh sách kề Đồ thị Đồ thị Bài Thực tìm kiếm theo chiều sâu (DFS) tìm kiếm theo chiều rộng (BFS) đồ thị Bài xuất phát từ đỉnh sau (Đưa tất loại cạnh khung thu được) Đồ thị 1: A, B, H Đồ thị 2: I, B, H Bài Cho đồ thị có hướng sau, đưa thứ tự topo đồ thị Bài Cho đồ thị sau, áp dụng thuật toán PRIM KRUSKAL để đưa khung có trọng số nhỏ đồ thị (nêu rõ bước thực hiện) Bài Đưa khung có số nhỏ đồ thị 1, Bài Tìm đưa đường ngắn cặp đỉnh (A,K) (A,G) đồ thị Bài Chứng minh duyệt theo chiều sâu (DFS) đồ thị vô hướng có loại cạnh Tree edge Back Edge Bài 10 Chứng minh quy nạp có đường hai đỉnh Bài 11 Chứng minh thực BFS đồ thị vô hướng G(V,E) ta thu cạnh (tree edge) cạnh chéo (cross edge) cạnh (u,v) cross edge u tổ tiên cháu v Bài 12 Đơn đồ thị có hướng G(V,E) lưu trữ ma trận kề Hãy viết chương trình kiểm tra xem đồ thị có tồn chu trình hay không, có in chu trình Bài 13 Cho đơn đồ thị vô hướng G(V,E) lưu trữ ma trận kề Hãy viết chương trình kiểm tra xem đồ thị có liên thông hay không Nếu không liên thông đồ thị liên thông lớn G Bài 14 Đơn đồ thị G(V,E) lưu trữ ma trận kề Viết chương trình tính in bậc đỉnh đồ thị Bài 15 Mô tả thuật toán tìm đường mê cung Bài 16 Viết chương trình chuyển đổi lưu trữ đồ thị từ ma trận kề thành danh sách kề ngược lại Bài 17 Viết chương trình kiểm tra danh sách đỉnh đồ thị có phải Topological đồ thị cho hay không Bài 18 Viết chương trình liệt kê khung nhỏ đồ thị G(V,E) Bài 19 Tập phủ đỉnh (Vertex cover) đồ thị G(V,E) tập đỉnh 𝑉 ′ ⊆ 𝑉 cho cạnh đồ thị có đỉnh thuộc 𝑉 ′ Hãy viết chương trình tìm tập phủ đỉnh đồ thị có kích thước nhỏ trường hợp G(V,E) Bài 20 Tập phủ đỉnh (Vertex cover) đồ thị G(V,E) tập đỉnh 𝑉 ′ ⊆ 𝑉 cho cạnh đồ thị có đỉnh thuộc 𝑉 ′ Nếu ta loại bỏ nút tìm kiếm thu thực DFS nút lại có tạo thành tập phủ đỉnh G(V,E)? Hãy chứng minh đưa phản ví dụ Bài 21 Tập độc lập (independent set) đồ thị vô hướng G(V,E) tập đỉnh U không cạnh E có hai đỉnh thuộc U (tức đỉnh U kề nhau) Các đỉnh màu xanh thuộc tập độc lập đồ thị • Viết chương trình tìm tập độc lập lớn (có nhiều đỉnh nhất) đồ thị G(V,E) trường hợp G Bài 22 Cho đồ thị vô hướng G(V,E), viết chương trình kiểm tra xem đồ thị có tồn chu trình kích thước không (chu trình tam giác - triangle) Bài 23 Cho hai dãy kết duyệt nhị phân theo thứ tự thứ tự trước, liệu ta xây dựng lại ban đầu từ hai dãy không? Nếu có mô tả thuật toán để xây dựng, ngược lại đưa phản ví dụ Trong trường hợp có thứ tự duyệt trước duyệt sau ta xây dựng lại hay không? Bài 24 Đưa thuật toán hiệu để thực chuyển đổi mô hình biểu diễn đồ thị sau: a Chuyển từ ma trận kề sang danh sách kề b Chuyển từ danh sách kề sang ma trận liên thuộc đỉnh cạnh (incidence matrix) Ma trận liên thuộc đỉnh cạnh ma trận 𝑀 đỉnh cạnh, 𝑀[𝑖, 𝑗] = đỉnh 𝑖 phần cạnh 𝑗 (là mút đầu mút cuối), ngược lại c Chuyển từ incidence matrix sang danh sách kề Đánh giá hiệu thuật toán mà bạn đề xuất Bài 25 Xây dựng đồ thị từ địa điểm thành phố Hà Nội Nhập vào hai địa điểm bất kỳ, đưa đường ngắn hai điểm Bài 26 Viết hàm duyệt nhị phân tìm kiếm tra phần tử thứ 𝑖 theo thứ tự xếp Bài 27 Một đỉnh 𝑣 đồ thị có hướng 𝐺(𝑉, 𝐸) gọi đỉnh mẹ - mother vertex tất đỉnh khác tới từ 𝑣 (tồn đường có hướng từ 𝑣 tới đỉnh G) a Hãy đưa thuật toán để kiểm tra xem 𝑣 có phải đỉnh mẹ đồ thị có hướng 𝐺(𝑉, 𝐸) Thời gian thực thuật toán bạn cỡ 𝑂(|𝑉| + |𝐸|) b Hãy đưa thuật toán để kiểm tra xem đồ thị có tồn đỉnh mẹ hay không Thuật toán bạn cần có thời gian cỡ 𝑂(|𝑉| + |𝐸|) Bài 28 Việc thêm cạnh có hướng vào đồ thị có hướng 𝐺(𝑉, 𝐸) làm giảm số lượng thành phần liên thông yếu đồ thị Số lượng thành phần liên thông yếu giảm tối đa bao nhiêu? Số lượng thành phần liên thông mạnh bao nhiêu? Bài 29 Giả sử bạn cần xếp cho 𝑛 bệnh nhân hàng dọc, mặt hướng đằng trước Bạn có danh sách mối quan hệ cặp bệnh nhân (𝑖, 𝑗) dạng “𝑖 ghét 𝑗” Nếu 𝑖 ghét 𝑗 bạn xếp 𝑖 đứng sau 𝑗 được, 𝑖 có khả làm với 𝑗 từ đằng sau a Đưa thuật toán để xếp hàng (hoặc kết luận xếp hàng được) với thời gian cỡ 𝑂(|𝑉| + |𝐸|) b Giả sử thay xếp bệnh nhân hàng, bạn muốn xếp bệnh nhân theo nhiều hàng cho 𝑖 ghét 𝑗 𝑖 phải hàng sau 𝑗 Đưa thuật toán hiệu để đưa số lượng hàng nhỏ Bài 30 Trường hợp toán tìm đường có trọng số nhỏ hai đỉnh đồ thị G(V, E), mà đồ thị tồn cạnh có trọng số âm • Nếu ta áp dụng thuật toán Dijkstra có tìm đường có trọng số nhỏ không? Hãy đưa phản ví dụ câu trả lời không • Nếu ta cải tiến đồ thị cách chuyển hết trọng số âm trọng số dương (Ví dụ đồ thị cạnh có trọng số 2, 3, -2 ta chuyển trọng số tương ứng 5, 6, 1), áp dụng Dijkstra để tìm có không? Giải thích sao? Bài 31 Hãy đưa thuật toán để tìm đỉnh bắt đầu thực DFS cho khung thu có chiều cao nhỏ Bài 32 Hãy đưa ý tưởng để thực DFS cho khung thu có chiều sâu lớn Bài 33 So sánh hiệu PRIM KRUSKAL thực tìm khung có trọng số nhỏ nhất? Trong trường hợp đồ thị tổng quát nên sử dụng thuật toán nào? Bài 34 Cài đặt thuật toán tìm khung có trọng số lớn Bài 35 Có thuật toán PRIM Kurskal lại cho ta hai khung khác hay không? Cho ví dụ? Bài 36 Đường hai đỉnh khung có trọng số nhỏ – MST tìm đồ thị đầy đủ có phải đường ngắn hai đỉnh đồ thị? Chứng minh đưa phản ví dụ Bài 37 Giả sử tất cạnh đồ thị có trọng số khác Đường hai đỉnh MST có phải đường ngắn hai đỉnh đồ thị hay không? Chứng minh đưa phản ví dụ Bài 38 PRIM Kurskal có làm việc với đồ thị có trọng số âm không? Giải thích? Bài 39 Gọi 𝑇 MST đồ thị 𝐺(𝑉, 𝐸), ta tạo đồ thị 𝐺′ từ 𝐺 cách cộng trọng số cạnh 𝐺 với giá trị 𝑘 Hỏi 𝑇 MST đồ thị 𝐺′ không? Chứng minh đưa phản ví dụ? Bài 40 Gọi 𝑃 = {𝑢, , 𝑣} đường có trọng số nhỏ từ 𝑢 đến 𝑣 đồ thị 𝐺(𝑉, 𝐸) Xây dựng đồ thị 𝐺′ từ 𝐺 cách cộng thêm trọng số cạnh 𝐺 giá trị 𝑘 Hỏi P đường ngắn 𝑢, 𝑣 đồ thị 𝐺′ không? Chứng minh đưa phản ví dụ Bài 41 Xem xét toán tìm tập cạnh có trọng số nhỏ nối đỉnh tập 𝑇 đồ thị 𝐺(𝑉, 𝐸) (𝑇 ⊆ 𝑉) a Bài toán chuyển toán MST không? b Hãy đưa thuật toán hiệu để tìm tập cạnh có tổng trọng số nhỏ mà kết nối tất đỉnh thuộc 𝑇 Bài 42 Hãy sửa đổi lại thuật toán PRIM để thực với thời gian 𝑂(𝑛 log 𝑘) đồ thị có 𝑘 loại trọng số khác Bài 43 Bài toán single-destination shortest path đồ thị có hướng tìm kiếm tất đường ngắn từ tất đỉnh tới đỉnh 𝑣 đặc biệt Hãy đưa thuật toán hiệu để giải toán Bài 44 Cho đồ thị vô hướng có trọng số 𝐺(𝑉, 𝐸), 𝑇 khung đường ngắn có gốc đỉnh 𝑣 a Hãy đưa đồ thị mà MST đồ thị trùng với khung đường ngắn có gốc 𝑣 b Hãy đưa đồ thị mà MST đồ thị khác với khung đường ngắn có gốc 𝑣 .. .Đồ thị Đồ thị Bài Thực tìm kiếm theo chiều sâu (DFS) tìm kiếm theo chiều rộng (BFS) đồ thị Bài xuất phát từ đỉnh sau (Đưa tất loại cạnh khung thu được) Đồ thị 1: A, B, H Đồ thị 2: I, B, H Bài. .. đồ thị có hướng sau, đưa thứ tự topo đồ thị Bài Cho đồ thị sau, áp dụng thuật toán PRIM KRUSKAL để đưa khung có trọng số nhỏ đồ thị (nêu rõ bước thực hiện) Bài Đưa khung có số nhỏ đồ thị 1, Bài. .. không Bài 18 Viết chương trình liệt kê khung nhỏ đồ thị G(V,E) Bài 19 Tập phủ đỉnh (Vertex cover) đồ thị G(V,E) tập đỉnh

Ngày đăng: 08/01/2016, 11:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan