Đề cương có đáp án môn Cấu trúc dữ liệu và Giải thuật

32 3.6K 18
Đề cương có đáp án môn Cấu trúc dữ liệu và Giải thuật

Đ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

Mục lục Câu 1: Trình bày mối quan hệ cấu trúc liệu giải thuật Cho ví dụ minh họa Câu 2: Cấu trúc liệu phép toán .3 Câu 3: Trình bày khác cấu trúc liệu cấu trúc lưu trữ, cho vd minh họa? .3 Câu 4: Trình bày đặc điểm cấu trúc ngôn ngữ lt bậc cao, 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ải thuậ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ải thuật bổ sung nút 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ấu trúc sau : Câu 10 : Trình bày ( ngơn ngữ tựa C ) giải thuậ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ấu trúc sau: Câu 11: Trình bày ngơn ngữ tựa C giải thuật cộng đa thức C = A + B Các phần tử đa thức cấu trúc sau .10 Câu 12: Trình bày ( ngơn ngữ tựa C ) giải thuậ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ải thuật duyệt theo thứ tự trước, ko đệ quy, dùng stack 14 Câu 15: Trình bày giải thuật duyệt theo thứ tự giải thuật ko đệ quy sử dụng stack 15 Câu 16: Tìm kiếm nhị fân 16 Câu 17: kiểm tra xem T phải "cây nhị phân tìm kiếm" hay ko 17 Câu 18: Tìm kiếm bổ sung nhị fân 19 Câu 19: loại bỏ nút 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ấu trúc liệu giải thuật Cho ví dụ minh họa Cấu trúc liệu giải thuật mối quan hệ mật thiết Giải thuậ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ấu trúc liệu: cách tổ chức, lưu trữ liệu MTDT cách thứ tự, hệ thống nhằm sử dụng liệu cách hiệu Ctdl gt 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 mối quan hệ với nhau, ngồi biết tổ chức chúng theo cấu trúc liệ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 giải thuật xử lý tương ứng Ctdl thay đổi giải thuật thay đổi theo Để ctrinh tốt, ta cần phải chọn ctdl phù hợp chọn gt đắn Vd: Giả sử ta danh sách trường đại học cao đẳng nước trường 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ải thuậ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ấu trúc dl gt mqh mật thiết 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ấu trúc liệu phép toán Đối với tốn phi số, đơi với cấu trúc liệu mwosi xuất phép toán tác động cấu trúc Thơng thường 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 tác dụng khác cấu trúc phép tốn hữu hiệu cấu trúc lại tỏ khơng hữu hiệu cấu trúc khác Vì chọn cấu trúc liệu ta phải nghĩ tới phép toán tác động cấu trú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ấu trúc liệu Cho nên người ta thường quan niệm : nói tới cấu trúc liệu bao hàm ln phép tốn tác động đến cấu trúc Câu 3: Trình bày khác cấu trúc liệu cấu trúc lưu trữ, cho vd minh họa? Cách biểu diễn cấu trúc liệu nhớ máy tính điện tử đk gọi cấu trúc lưu trữ Đó cách cài đặt cấu trúc máy tính điện tử sở cấu trúc lưu trữ mà thực phép xử lí Ta cần phân biệt cấu trúc liệu cấu trúc lưu trữ tương ứng thể nhiều cấu trúc lưu trữ khác cho cấu trúc liệu, 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 trúc liệu ngăn xếp (stack) Mặt khác, cấu trúc liệu nhue : danh sách, ngân xếp cài đặt máy thơng qua cấu trúc lưu trữ móc nối Câu 4: Trình bày đặc điểm cấu trúc ngơn ngữ lt bậc cao, 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… 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ấu trúc Các liệu thuộc kiểu liệu cấu trúc gọi cấu trúc liệ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ấu trúc liệu phức hợp gồm nhiều thành phần liệu, thành phần liệu sở cấu trúc liệu đk xây dựng Các thành phần liệu tạo nên cấu trúc liệ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ấu trúc C +) Sử dụng trỏ để liên kết liệu Câ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ải thuật chương trình để giải chúng 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 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ấu trúc nhân cấp 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 giải thuậ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 thể hình dung cách thiết kế theo sơ đồ cấu trú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ải thuậ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ấu trú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ải thuậ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à tốn, nhiệm vụ phân tích thiết kế giải thuật giả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ải thuậ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ải thuậ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ải thuậ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ấu trúc liệu đến dạng cấu trú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ải thuật Thời gian thực giải thuậ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ải thuậ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 đố 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ải thuật mặt tốc độ Nếu thời gian thực giải thuật T1(n)=cn2 thời gian thực giải thuật khác T2(n)=kn (với c k số đó) n lớn, thời gian thực giải thuật T2 rõ ràng so với giải thuật T1 nói thời gian thực giải thuật T(n) tỉ lệ với n hay tỉ lệ với n cho ta ý niệm tốc độ thực giải thuật n lớn (với n nhỏ việc xét T(n) khơng ý 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ải thuật T(n)=cn (c số) ta nói : độ phức tạp tính tốn giải thuật 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ấ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 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ử mảng A số thực, cỡ n ta cần tìm xem mảng chứa số thực x khơng Điều thực giải thuậ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ải thuậ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ấu trú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ải thuậ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ải thuật cộng đa thức C = A + B Các phần tử đa thức cấu trú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 ) // đuôi D -> NEXT = P;//gán P vào đuôi Else // chưa 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

Ngày đăng: 06/06/2018, 12:45

Từ khóa liên quan

Mục lục

  • Câu 1: Trình bày mối quan hệ giữa cấu trúc dữ liệu và giải thuật. Cho ví dụ minh họa

  • Câu 2: Cấu trúc dữ liệu và phép toán

  • Câu 3: Trình bày sự khác nhau của cấu trúc dữ liệu và cấu trúc lưu trữ, cho vd minh họa?

  • Câu 4: Trình bày những đặc điểm về cấu trúc trong các ngôn ngữ lt bậc cao, có liên hệ với ngôn ngữ C

  • Câu 5 : Phương pháp thiết kế Top_Down

  • Câu 6: Phương pháp tinh chỉnh từng bước ( stepwise refinement)

  • Câu 7: Trình bày cách phân tích thời gian thực hiện giải thuật

  • Câu 8. Trình bày cách Xác định độ phức tạp tính toán của giải thuật, với những nội dung: Qui tắc tổng, phép toán tích cực, thời gian chạy của các câu lệnh lặp, cho ví dụ minh họa.

  • Câu 9 : Trình bày ( bằng ngôn ngữ tựa C ) giải thuật bổ sung một nút mới có chứa dữ liệu X vào trước nút con trỏ bởi Q trong danh sách móc nối hai chiều với : Pdau trỏ và phần tử đầu, Pcuoi trỏ vào phần tử cuối, mỗi nút có cấu trúc như sau :

  • Câu 10 : Trình bày ( bằng ngôn ngữ tựa C ) giải thuật loại bỏ một nút trỏ bởi Q trong danh sách móc nối hai chiều với : Pdau chỉ vào phần tử đầu, Pcuoi chỉ vào phần tử cuối, mỗi nút có cấu trúc như sau:

  • Câu 11: Trình bày bằng ngôn ngữ tựa C giải thuật cộng 2 đa thức C = A + B. Các phần tử của mỗi đa thức có cấu trúc như sau

  • Câu 12: Trình bày ( bằng ngôn ngữ tựa C ) giải thuật định giá biểu thực hậu tố bằng cách dùng stack.

  • Câu 13: chuyển đổi biểu thức trung tố sang hậu tố

  • Câu 14: Trình bày (nn tựa C) giải thuật duyệt cây theo thứ tự trước, ko đệ quy, dùng stack

  • Câu 15: Trình bày giải thuật duyệt cây theo thứ tự giữa bằng giải thuật ko đệ quy có sử dụng stack

  • Câu 16: Tìm kiếm nhị fân

  • Câu 17: kiểm tra xem T có phải là "cây nhị phân tìm kiếm" hay ko

  • Câu 18: Tìm kiếm có bổ sung trên cây nhị fân

  • Câu 19: loại bỏ 1 nút có giá trị X trên cây nhị phân tìm kiếm.

  • Câu 20: sắp xếp nhanh ( Phân đoạn) Quick sort

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

Tài liệu liên quan