1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề thi học kỳ năm 2011 môn Cấu trúc dữ liệu và giải thuật (Mã đề 01) - Đại học Bách khoa Hà Nội

6 23 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 698,68 KB

Nội dung

Đề thi học kỳ năm 2011 môn Cấu trúc dữ liệu và giải thuật giúp các bạn sinh viên có thêm tài liệu để củng cố các kiến thức, ôn tập kiểm tra, thi cuối kỳ. Đây là tài liệu bổ ích để các em ôn luyện và kiểm tra kiến thức tốt, chuẩn bị cho kì thi học kì. Mời các em và các quý thầy cô giáo bộ môn tham khảo.

Mã đề TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BỘ MÔN KHOA HỌC MÁY TÍNH Họ tên: …………………………… Lớp: ………………………………… SHSV: ……………………………… *** ĐỀ THI MÔN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Ngày thi: … /… /… CD 2011 - 01 Hà nội, … /… / … Trưởng môn Thời gian 90’ (Sinh viên sử dụng tài liệu) Bài a) Phân biệt mảng cấp phát động mảng cấp phát tĩnh Khi nên dùng mảng cấp phát động, mảng cấp phát tĩnh? Cho ví dụ minh họa (1 Điểm) Bộ nhớ Kích thước Thời điểm cấp phát Thu hồi nhớ Mảng cấp phát tĩnh Mảng cấp phát động Bộ nhớ lấy từ phần DATA Bộ nhớ giới hạn, cấp phát cho biến có kích thước nhỏ Bộ nhớ cấp phát thời điểm biên dịch chương trình Hệ điều hành tự thu hồi nhớ không dùng đến Bộ nhớ lấy từ HEAP Dung lượng nhớ lớn, cấp phát cho biến kích thước lớn Bộ nhớ cấp phát thời điểm chạy Người lập trình phải tự thu hồi nhớ xin cấp phát Cấp phát tĩnh: cho biến kích thước nhỏ, biến đơn float a,b, Ar[100]; Cấp phát động: Dùng cho biến kích thước lớn, mảng lớn,… double *A; A = (double*)malloc(10000*sizeof(double)); b) Đánh giá thời gian thực tồi hàm sau theo O-lớn (1 Điểm) double fastPower(double x, int n) { double fract; if(n==0) return 1; } if(n%2==0) return fastPower(x,n/2)*fastPower(x,n/2); else return fastPower(x,n/2)*fastPower(x,n/2)*x; 1|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm cài đặt đệ quy, lời gọi đệ quy fract = fastPower(x,n/2); Được gọi lần hàm (ứng với if else), ta có cơng thức đệ quy tổng qt 𝑛 𝑛ế𝑢 𝑛 = 𝑇(𝑛) = �2𝑇�𝑛 � + 𝑛ế𝑢 𝑛 > �2 Ta viết gọn lại 𝑇(𝑛) = 2𝑇 � � + Áp dụng định lý thợ với 𝑎 = 2, 𝑏 = 𝑓(𝑛) = 𝑛log𝑏 𝑎 = 𝑛log2 = 𝑛  trường hợp định lý thợ Vậy kết luận 𝑇(𝑛) = 𝜃(𝑛) c) So sánh ưu nhược điểm phương pháp tổ chức tìm kiếm dùng mảng áp dụng thuật tốn tìm kiếm nhị phân, nhị phân tìm kiếm dùng bảng băm theo tiêu chí sau (1 Điểm) Tiêu chí Bộ nhớ dùng lưu trữ phần tử Thời gian tìm kiếm Thêm phần tử Xố phần tử In danh sách phần tử có Tìm kiếm nhị phân 𝑂(𝑛) Tỉ lệ với số phần tử, nhiên phần tử lưu trữ thêm liệu thừa 𝑂(log 𝑛) 𝑂(𝑛) 𝑂(𝑛) 𝑂(𝑛) Cây nhị phân tìm kiếm 𝑂(𝑛) Tỉ lệ với số phần tử, nhiên phần tử phải lưu trữ thêm liệu thừa (2 trỏ) 𝑂(log 𝑛) 𝑂(log 𝑛) 𝑂(log 𝑛) 𝑂(𝑛) Bảng băm Số lượng ô nhớ xác định trước, kích thước bảng băm (thường lớn số lượng phần tử cần lưu nhiều lần) 𝑂(1) 𝑂(1) 𝑂(1) Không hỗ trợ thao tác này, muốn in ta phải duyệt toàn bảng băm Bài a) Biểu thức dạng hậu tố gì? Ưu điểm biểu thức dạng hậu tố? (1 Điểm) Biểu thức dạng hậu tố: Là cách biểu diễn biểu thức tồn tử đứng sau tốn hạng mà tác động Ví dụ: + a – Ưu điểm biểu thức dạng hậu tố có cách định giá (cách tính) Khơng biểu thức dạng trung tố cần quy định thêm độ ưu tiên toán tử, dấu ngoặc Biểu thức dạng hậu tố dùng để biểu diễn biểu thức máy tính b) Chuyển biểu thức dạng trung tố sau sang dạng hậu tố (1 Điểm) Gặp a + / ( * a 2|Page CuuDuongThanCong.com 𝑎 + 3/(2 ∗ 𝑎 − 𝑐 ∗ 𝑏) − 𝑒 STACK ∅ + + +,/ +,/, ( +,/, ( +,/, (,∗ +,/, (,∗ https://fb.com/tailieudientucntt c * b ) e +,/, (, − +,/, (, − +,/, (, −,∗ +,/, (, −,∗ +,/ − − Biểu thức kết quả: 𝑎 𝑎 ∗ 𝑐 𝑏 ∗ − / + 𝑒 − c) Vẽ biểu thức biểu diễn cho biểu thức phần b (khơng cần phải trình bày bước trung gian) (1 Điểm) Bài a) Cho nhị phân tìm kiếm ban đầu hình thêm dãy khóa 43, 12, 36, 78, 29, 16, 9, 65, 27, 32 Hãy vẽ nhị phân kết thu cuối (khơng cần trình bày bước trung gian) (1 Điểm) 3|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt b) Với nhị phân tìm kiếm thu phần a, thực xóa khóa 18 36 Hãy vẽ kết thu sau lần xóa Chú ý: chọn nút thay nút phải trái (1 Điểm) Bài Cho đơn đồ thị vô hướng 𝐺(𝑉, 𝐸) sau 𝑉 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺, 𝐻} 𝐸 = {(𝐴, 𝐵), (𝐴, 𝐶), (𝐴, 𝐸), (𝐵, 𝐸), (𝐵, 𝐺), (𝐶, 𝐷), (𝐶, 𝐵), (𝐷, 𝐸), (𝐹, 𝐷), (𝐹, 𝐸), (𝐹, 𝐺), (𝐻, 𝐵), (𝐻, 𝐺)} a) Hãy biểu diễn đồ thị dùng danh sách kề (1 Điểm) 4|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt b) Thực DFS từ đỉnh D, đưa thứ tự đỉnh thăm (1 Điểm) Chỉ cần vẽ hình trạng hàng đợi khung DFS D đủ điểm STT 10 11 12 13 14 15 16 STACK D D, C D, C, A D, C, A, B D, C, A, B, E D, C, A, B, E, F D, C, A, B, E, F, G D, C, A, B, E, F, G, H D, C, A, B, E, F, G D, C, A, B, E, F D, C, A, B, E D, C, A, B D, C, A D, C D ∅ c) Hãy đưa loại cạnh thu DFS đỉnh D (BackEdge, CrossEdge, TreeEdge ForwardEdge) Lưu ý: Các đỉnh đồ thị thăm theo thứ tự ABC (1 Điểm) Cạnh DC, CA, AB, BE, EF, FG, GH Tree-Edge Cạnh ngược BC, ED, FD, GB, HB, EA Back-edge Cạnh tới Forward-Edge Cạnh vòng Cross-Edge 5|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài Để biểu diễn tập hợp số nguyên ta dùng danh sách liên kết đơn với cấu trúc phần tử khai báo sau: typedef struct Node { int data; struct node *pNext; } NODE; a) Hãy xây dựng hàm tìm trả giá trị phần tử chẵn lớn tập hợp trường hợp biết phần tử tập hợp xếp theo thứ tự tăng dần giá trị (1 Điểm) int FindMax (NODE *pHead) { } b) Hãy đánh giá thời gian thực trường hợp tồi hàm bạn viết theo O-lớn (0.5 Điểm) int FindMax (NODE *pHead) { NODE *ptr = pHead; int i= 0; //biến để đếm vị trí phần tử int pos=-1; while(ptr!=NULL) { if(ptr->data%2==0) { pos = i; } ptr = ptr->pNext; i++; } return pos; } Dễ thấy thời gian thực thuật toán trường hợp tồi cỡ 𝑂(𝑛) Tổng điểm: 12.5 điểm 6|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt ... tự ABC (1 Điểm) Cạnh DC, CA, AB, BE, EF, FG, GH Tree-Edge Cạnh ngược BC, ED, FD, GB, HB, EA Back-edge Cạnh tới Forward-Edge Cạnh vòng Cross-Edge 5|Page CuuDuongThanCong.com https://fb.com/tailieudientucntt... thực trường hợp tồi hàm bạn viết theo O-lớn (0.5 Điểm) int FindMax (NODE *pHead) { NODE *ptr = pHead; int i= 0; //biến để đếm vị trí phần tử int pos =-1 ; while(ptr!=NULL) { if(ptr->data%2==0) { pos... nguyên ta dùng danh sách liên kết đơn với cấu trúc phần tử khai báo sau: typedef struct Node { int data; struct node *pNext; } NODE; a) Hãy xây dựng hàm tìm trả giá trị phần tử chẵn lớn tập hợp

Ngày đăng: 05/11/2020, 10:39

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

TÀI LIỆU LIÊN QUAN

w