Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
78,13 KB
Nội dung
Mục lục Câu 1: Trình bày mối quan hệ cấutrúcliệugiảithuật Cho ví dụ minh họa Câu 2: Cấutrúcliệu phép toán .3 Câu 3: Trình bày khác cấutrúcliệucấutrúc lưu trữ, cho vd minh họa? .3 Câu 4: Trình bày đặc điểm cấutrúc ngôn ngữ lt bậc cao, có liên hệ với ngơn ngữ C .3 Câu : Phương pháp thiết kế Top_Down Câu 6: Phương pháp tinh chỉnh bước ( stepwise refinement) .6 Câu 7: Trình bày cách phân tích thời gian thực giảithuật .6 Câu Trình bày cách Xác định độ phức tạp tính tốn giải thuật, với nội dung: Qui tắc tổng, phép tốn tích cực, thời gian chạy câu lệnh lặp, cho ví dụ minh họa Câu : Trình bày ( ngôn ngữ tựa C ) giảithuật bổ sung nút có chứa liệu X vào trước nút trỏ Q danh sách móc nối hai chiều với : Pdau trỏ phần tử đầu, Pcuoi trỏ vào phần tử cuối, nút cócấutrúc sau : Câu 10 : Trình bày ( ngơn ngữ tựa C ) giảithuật loại bỏ nút trỏ Q danh sách móc nối hai chiều với : Pdau vào phần tử đầu, Pcuoi vào phần tử cuối, nút cócấutrúc sau: Câu 11: Trình bày ngơn ngữ tựa C giảithuật cộng đa thức C = A + B Các phần tử đa thức cócấutrúc sau .10 Câu 12: Trình bày ( ngơn ngữ tựa C ) giảithuật định giá biểu thực hậu tố cách dùng stack 11 Câu 13: chuyển đổi biểu thức trung tố sang hậu tố .12 Câu 14: Trình bày (nn tựa C) giảithuật duyệt theo thứ tự trước, ko đệ quy, dùng stack 14 Câu 15: Trình bày giảithuật duyệt theo thứ tự giảithuật ko đệ quy có sử dụng stack 15 Câu 16: Tìm kiếm nhị fân 16 Câu 17: kiểm tra xem T có phải "cây nhị phân tìm kiếm" hay ko 17 Câu 18: Tìm kiếm có bổ sung nhị fân 19 Câu 19: loại bỏ nút có giá trị X nhị phân tìm kiếm 21 Câu 20: xếp nhanh ( Phân đoạn) Quick sort 22 Câu 21: xếp vun đống (Heapsort) 23 Câu 22: Sắp xếp hòa nhập (Merge-sort) 25 Câu 23: Quân hậu 26 Câu 24: giai thừa 28 Câu 25: Duyệt thứ tự sau .30 Câu 26: ưu nhược phương pháp xếp .30 Câu 1: Trình bày mối quan hệ cấutrúcliệugiảithuật Cho ví dụ minh họa Cấutrúcliệugiảithuậtcó mối quan hệ mật thiết Giảithuật hệ thống chặt chẽ rõ ràng qui tắc nhằm xác định dãy thao tác đối tượng, cho sau số bước hữu hạn thực thao tác ta thu kết mong muốn Cấutrúc liệu: cách tổ chức, lưu trữ liệu MTDT cách có thứ tự, có hệ thống nhằm sử dụng liệu cách hiệu Ctdl gt có mối liên hệ chặt chẽ với nhau, chúng tồn song song kèm theo công thức: ctdl+gt=ctrinh Bản thân phần tử liệu thường có mối quan hệ với nhau, ngồi biết tổ chức chúng theo cấutrúcliệu thích hợp việc thực phép xử lý liệu thuận lợi hơn, đạt hiệu cao Với ctdl chọn ta cógiảithuật xử lý tương ứng Ctdl thay đổi giảithuật thay đổi theo Đểcó ctrinh tốt, ta cần phải chọn ctdl phù hợp chọn gt đắn Vd: Giả sử ta có danh sách trường đại học cao đẳng nước trường có thơng tin sau: Tên trường, địa chỉ, sđt phòng đào tạo Ta muốn viết chương trình máy tính điện tử để cho biết “tên trường” máy hình cho ta: “địa chỉ” “số điện thoại phòng đào tạo” trường cách đơn giản duyệt tên trường dnah sách tìm thấy trường cần tìm đói chiếu “địa chỉ” “số điện thoại phòng đào tạo” trường Cách tìm rõ ràng chấp nhận danh sách ngắn danh sách dài thời gian Nếu ta biết tổ chức lại danh sách cách xếp theo thứ tự từ điển tên trường, áp dụng giảithuật tìm kiếm khác tốt hơn, tương tự ta thường làm tra từ điển Cách tìm nhanh cách nhiều áp dụng với liệu chưa xếp Nếu lại biết tổ chức thêm bảng mục lục dẫn theo chữ tên trường, tìm “địa chỉ” “số điện thoại phòng đào tạo” Hvktmm ta bỏ qua tên trường mà chữ đầu “H” Như cấutrúc dl gt có mqh mật thiết Có thể coi chúng hình với bóng, khơng thể nói gới mà khơng nhắc tới Câu 2: Cấutrúcliệu phép toán Đối với tốn phi số, đơi với cấutrúcliệu mwosi xuất phép toán tác động cấutrúc Thơng thường có phép tốn : phép tạo lập hủy bỏ cấu trúc, phép truy nhập vào phần tử cấu trúc, phép bổ sung laoij bỏ phần tử cấu trúc… Các phép tốn có tác dụng khác cấutrúcCó phép tốn hữu hiệu cấutrúc lại tỏ khơng hữu hiệu cấutrúc khác Vì chọn cấutrúcliệu ta phải nghĩ tới phép toán tác động cấutrúc ngược lại, nói tới phép tốn lại phải ý tới phép đk tác động cấutrúcliệu Cho nên người ta thường quan niệm : nói tới cấutrúcliệu bao hàm ln phép tốn tác động đến cấutrúcCâu 3: Trình bày khác cấutrúcliệucấutrúc lưu trữ, cho vd minh họa? Cách biểu diễn cấutrúcliệu nhớ máy tính điện tử đk gọi cấutrúc lưu trữ Đó cách cài đặt cấutrúc máy tính điện tử sở cấutrúc lưu trữ mà thực phép xử lí Ta cần phân biệt cấutrúcliệucấutrúc lưu trữ tương ứng Có thể có nhiều cấutrúc lưu trữ khác cho cấutrúc liệu, cócấutrúcliệu khác mà đk thể nhớ kiểu cấutrúc lưu trữ Vd: cấutrúc lưu trữ ( mảng) cấutrúc lưu trữ móc nối đk dùng để cài đặt cấutrúcliệu ngăn xếp (stack) Mặt khác, cấutrúcliệu nhue : danh sách, ngân xếp cài đặt máy thơng qua cấutrúc lưu trữ móc nối Câu 4: Trình bày đặc điểm cấutrúc ngơn ngữ lt bậc cao, có liên hệ với ngơn ngữ C Trong ngơn ngữ lập trình bậc cao, liệu phân nhánh thành kiểu liệu kiểu liệu nhận biến xác đinh tập giá trị mà biến nhận phép tốn thực giá trị Mỗi ngơn ngữ lập trình cung cấp cho số kiểu liệu bạn ngôn ngữ lập trình khác , kiểu liệu khác Các ngơn ngữ lập trình C, pascal… có kiểu liệu phong phú Các kiểu liệu đk tạo thành từ nhiều kiểu liệu khác gọi la kiểu liệucócấutrúc Các liệu thuộc kiểu liệucấutrúc gọi cấutrúcliệu Từ kiểu , cách sử dụng quy tắc ,cú pháp để kiến tạo kiểu liệu, người lập trình xây dựng nên gọi kiểu liệu xác định người sử dụng => Như vậy: cấutrúcliệu phức hợp gồm nhiều thành phần liệu, thành phần liệu sở cấutrúcliệu đk xây dựng Các thành phần liệu tạo nên cấutrúcliệu đk liên kết với theo cách Trong ngơn ngữ lập trình C phương pháp để liên kết liệu : +) Liên kết liệu kiểu tạo thành mảng liệu +) Liên kết liệu thành mảng cấutrúc C +) Sử dụng trỏ để liên kết liệuCâu : Phương pháp thiết kế Top_Down Ngày công nghệ thông tin ứng dụng lĩnh vực sống, tốn giải máy tính điện tử đa dạng vào phức tạp, giảithuật chương trình đểgiải chúng có quy mơ ngày lớn , nên khó ta muốn tìm hiểu thiết lập chúng Tuy nhiên ta thấy việc đơn giản phân chia tốn lớn thành tốn nhỏ Điều có nghã coi tốn ta mơ đun cần chia thành mơ đun con, dĩ nhiên, với tinh thần thế, đến lượt nó, mô đun lại tiếp tục chia tiếp mô đun ứng với phần việc mà ta biết cách giải Như việc tổ chức lời giải toán thể theo cấutrúc nhân cấp có dạng sau : Cách giải tốn theo gọi chiến thuật “ chia để trị” Để thể chiến thuật đó, người ta dùng cách thiết kế “ đinh_xuống” (top-down design) Đó cách phân tích tổng qt tồn vấn đề, xuất phát từ kiện mục tiêu đặt đểđề cập đến công việc chủ yếu trước, sau mwosi dần vào giải phần việc cụ thể cách chi tiết hơn, mà người ta gọi cách thiết kế cách thiết kế từ khái qt đến chi tiết Ví dụ: để viết chương trình quản lí bán hàng chạy máy tính, với yêu cầu : hàng ngày phải nhập hóa đơn bán hàng, hóa đơn nhập hàng, tìm kiếm hóa đơn nhập để xem sửa lại in hóa đơn cho khách hàng; tính doanh thu, lợi nhuận khoảng thời gian bất kì; tính tổng hợp kho, tính doanh số mặt hàng, khách hàng Xuất phát từ yêu cầu ta cógiảithuậtđể xử lí, mà nên chia tốn thành nhiệm vụ cần giải sau: Xử lí danh mục để quản lí theo dõi thơng tin hàng hóa khách hàng Xử lí liệu hóa đơn bán hàng, hóa đơn nhập hàng In báo cáo doanh thu, lợi nhuận Có thể hình dung cách thiết kế theo sơ đồ cấutrúc sau: Quản lí bán hàng Xử3líbài hóatốn đơnnhỏ Xử lí doanhChia mụcbài tốn thành In báo cáo Các nhiệm vụ mức đầu thường tương đối phức tạp, nên cần phải chia tiếp thành nhiệm vụ Chằng hạn nhiệm vụ “ xử lí doanh mục” chia thành hai “ danh mục hàng hóa” “ danh mục khách hàng” Trong danh mục hàng hóa lại chia thành nhiệm vụ nhỏ như: Thêm hàng Tìm kiếm hàng Tổng hợp kho Những nhiệm vụ chia thành nhiêm vụ nhỏ , ta hình dung theo sơ đồ sau: Xử lí doanh mục Doanh mục hàng hóa Hàng Tìm hàng Dm khách hàng Tổng hợp kho Tồn kho Doanh thu,lợi nhuận Cách thiết kế giảithuật theo kiểu top-down giúp cho việc gải toán định hướng rõ ràng , tránh sa đà vào chi tiết phụ Nó tảng cho việc lập trình cócấutrúc Thơng thường, tốn lớn, việc giải phải nhiều người làm Chính phương pháp mơ đun hóa cho phép tách tốn thành phần độc lập, tạo điều kiện cho nhóm giải phần việc mà khơng ảnh hưởng đến nhóm khác Với chương trình xây dựng sở giảithuật thiết kế theo cách , việc tìm hiểu sửa chữa, chỉnh lí đơn giản Trong thực tế, việc phân tích tốn thành tốn khơng phải việc dễ dàng Chính mà có tốn, nhiệm vụ phân tích thiết kế giảithuậtgiải tốn nhiều thời gian công sức nhiệm vụ lập trình Câu 6: Phương pháp tinh chỉnh bước ( stepwise refinement) Tinh chỉnh bước phương pháp thiết kế giảithuật gắn liền với lập trình Nó phản ánh tinh thần q trình mơ đun hóa toán thiết kế kiểu top-down Ban đầu chương trình thể giảithuật trình bày ngơn ngữ tự nhiên, phản ánh ý của cơng việc cần làm Từ bước sau, lời , ý chi tiết hóa tương ứng với công việc nhỏ Ta gọi bước tinh chỉnh, tinh chỉnh hướng phía ngơn ngữ lập trình mà ta chọn Càng bước sau, lời lẽ đặc tả cơng việc cần xử lí thay dần câu lệnh hướng tới câu lệnh ngơn ngữ lập trình Muốn vậy, giai đoạn trung gian người ta thường dùng pha tạp ngơn ngữ tự nhiên lẫn ngơn ngữ lập trình, mà người ta gọi “ giả ngôn ngữ” hay “ giả mã” Như nghĩa trình thiết kế giảithuật phát triển chương trình thể dần dần, từ dạng ngôn ngữ tự nhiên, qua giả ngơn ngữ, đến ngơn ngữ lập trình, từ mức” làm gì” đến mức “ làm nào”, ngày sát với chức ứng với câu lệnh ngơn ngữ lập trình chọn Trong trình liệu “ tính chế “ từ dạng cấutrúcliệu đến dạng cấutrúc lưu trữ cụ thể máy Các bước: diễn đạt gt ngôn ngữ tự nhiên Thay lời lẽ đặc tả công việc câu lệnh hướng tới câu lệnh ngôn ngữ ltrinh, dùng giả ngôn ngữ hay giả mã Viết n2 lập trình Câu 7: Trình bày cách phân tích thời gian thực giảithuật Thời gian thực giảithuật phụ thuộc vào nhiều yếu tố yếu tố cần ý trc tiên kích thước liệu đưa vào Chẳng hạn thời gian xếp dãy số phải chịu ảnh hưởng số lượng số thuộc dãy số Nếu gọi n số lượng thời gian thực T giảithuật phải biểu diễn hàm n: T(n) Các kiểu lệnh cà tốc độ xử lý máy tính ngơn ngữ viết chương trình chương trình dịch ngơn ngữ ảnh hưởng tới thời gian thực hiện, yếu tố không đồng với loại máy cài đặt giải thuật, khơng thể dựa vào chúng xác lập T(n) Điều đố có nghĩa T(n) khơng thể biểu diễn thành đơn vị thời gian giây, phút Tuy nhiên khơng phải mà khơng thể so sánh giảithuật mặt tốc độ Nếu thời gian thực giảithuật T1(n)=cn2 thời gian thực giảithuật khác T2(n)=kn (với c k số đó) n lớn, thời gian thực giảithuật T2 rõ ràng so với giảithuật T1 Và nói thời gian thực giảithuật T(n) tỉ lệ với n hay tỉ lệ với n cho ta ý niệm tốc độ thực giảithuật n lớn (với n nhỏ việc xét T(n) khơng có ý nghĩa) Câu Trình bày cách Xác định độ phức tạp tính tốn giải thuật, với nội dung: Qui tắc tổng, phép tốn tích cực, thời gian chạy câu lệnh lặp, cho ví dụ minh họa Nếu thời gian thực giảithuật T(n)=cn (c số) ta nói : độ phức tạp tính tốn giảithuậtcó cấp n2 ta ký hiệu: T(n) = O(n2) (ký hiệu chữ O lớn) Một cách tổng quát định nghĩa: hàm f(n) xác định O(g(n)) f(n) = O(g(n)) gọi có cấp g(n) tồn số c n0 cho: f(n) =n0 nghĩa f(n) bị chặn số nhân với g(n) với giá trị n từ thời điểm Quy tắc tổng: Giả sử T1(n) T2(n) thời gian thực đoạn chương trình P1 P2 mà T1(n) = O(f(n)); T2(n) = O(g(n)) thời gian thực P1 P2 là: T1(n) + T2(n) = O(max(f(n),g(n)) Ví dụ: chương trình có bước thực mà thời gian thực bước O(n2), O(n3) O(n log2n) thời gian thực bước đầu O(max(n2,n3))=O(n3) thời gian thực chương trình là: O(max(n3, n log2n))=O(n3) Thời gian chạy câu lệnh lặp: Các câu lệnh lặp gồm: for, while, while Để đánh giá thời gian thực câu lệnh lặp, trước hết ta cần đánh giá số tối đa lần lặp giả sử L(n) Sau đnahs giái thời gian chạy lần lặp, ý thời gian thực thân lệnh lặp lần lặp khác khác nhau, giả sử thời gian thực thân lệnh lặp lần thứ i(i=1,2, L(n)) T i(n) Mỗi lần lặp, cần kiểm tra điều kiện lặp giả sử thời gian lặp kiểm tra T 0(n) Như thời gian chạy lệnh lặp là: T0(n)+ Ti(n)) Cơng đoạn khó đánh giá thời gian chạy lệnh lặp đánh giá số lần lặp Trong nhiều lệnh lặp, đặc biệt lệnh lặp For, ta thấy số lần lặp tối đa Nhưng không lệnh lặp, từ điều kiện lặp để suy số tối đa lần lặp, ta cần phải tiến hành suy diễn không đơn giản Trường hợp hay gặp kiểm tra điều kiện lặp cần thời gian O(1), thời gian thực lần lặp giả sử ta đánh giá O(f(n)); đánh giá số lần lặp O(g(n)) thời gian chạy lệnh lặp O(g(n)).f(n) Ví dụ: giải sử có mảng A số thực, cỡ n ta cần tìm xem mảng có chứa số thực x khơng Điều thực giảithuật tìm kiếm sau: i=0; while(i DATA = X; P -> P_L = P -> P_R = NULL; If ( Pcuoi == NULL ) { Pdau = Pcuoi = P; } Else If ( Q ==Pdau ) { Q -> P_L = P; P -> P_R = Q; Pdau = P; } Else { P -> P_L = Q -> P_L; P -> P_R = Q; Q -> P_L = P; P -> P_L -> P_R = P; } } Câu 10 : Trình bày ( ngôn ngữ tựa C ) giảithuật loại bỏ nút trỏ Q danh sách móc nối hai chiều với : Pdau vào phần tử đầu, Pcuoi vào phần tử cuối, nút cócấutrúc sau: P_L trỏ tới trỏ bên trái DATA chứa liệu P_R trỏ tới trỏ bên phải XOA_NUT (Pdau, Pcuoi, Q ) { /* L R trỏ trái phải danh sách móc nối kép, Q trỏ tới nút danh sách Giảithuật thực việc loại bỏ Q khỏi danh sách*/ If ( Pcuoi== NULL ) Printf(“Danh sách rỗng”); Else If ( Pdau == Pcuoi ) Pdau= Pcuoi = NULL; Else If ( Q == Pdau ) { Pdau = Q-> P_R Pdau -> P_L = NULL; } Else If ( Q == Pcuoi ) { Pcuoi = Pcuoi -> P_L; Pcuoi -> P_R = NULL; } Else { Q -> P_L -> P_R = Q -> P_R; Q -> P_R -> P_L = Q -> P_L; } Free(Q); } } Câu 11: Trình bày ngơn ngữ tựa C giảithuật cộng đa thức C = A + B Các phần tử đa thức cócấutrúc sau HSO Ghi hệ số MU Ghi số mũ NEXT Ghi địa đến phần tử THEM_PHAN_TU ( H, M, D) { P = MALLOC(); P -> HSO = H; P -> MU = M; If ( C != NULL ) // có đuôi D -> NEXT = P;//gán P vào đuôi Else // chưa có C = P; D = P; // nút thêm trở thành đuôi } CONG_DA_THUC ( A, B, C) { P = A; Q = B; C= NULL; While ( P == NULL && Q == NULL ) If ( P -> MU == Q -> MU ) { H = P -> HSO + Q -> HSO; If ( H != 0) THEM_PHAN_TU(H, P-> MU, D); P = P -> NEXT; Q = Q -> NEXT; 10 ... ứng Có thể có nhiều cấu trúc lưu trữ khác cho cấu trúc liệu, có cấu trúc liệu khác mà đk thể nhớ kiểu cấu trúc lưu trữ Vd: cấu trúc lưu trữ ( mảng) cấu trúc lưu trữ móc nối đk dùng để cài đặt cấu. .. liệu khác Các ngơn ngữ lập trình C, pascal… có kiểu liệu phong phú Các kiểu liệu đk tạo thành từ nhiều kiểu liệu khác gọi la kiểu liệu có cấu trúc Các liệu thuộc kiểu liệu cấu trúc gọi cấu trúc. .. toán tác động cấu trúc Thơng thường có phép tốn : phép tạo lập hủy bỏ cấu trúc, phép truy nhập vào phần tử cấu trúc, phép bổ sung laoij bỏ phần tử cấu trúc Các phép tốn có tác dụng khác cấu trúc