Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
565 KB
Nội dung
CẤU TRÚC DỮ LIỆU CHƯƠNG 1: MỞ ĐẦU Nguyễn Văn Linh Khoa Công nghệ Thông tin & Truyền thông nvlinh@ctu.edu.vn Phần dành cho đơn vị MỤC TIÊU • • • Hiểu phương pháp mơ hình hố tốn thực tế Hiểu trình từ ý tưởng thuật tốn, đến thuật tốn viết ngơn ngữ giả chương trình viết ngơn ngữ lập trình Hiểu khái niệm: kiểu liệu, cấu trúc liệu kiểu liệu trừu tượng TỪ BÀI TOÁN ĐẾN CHƯƠNG TRÌNH Mơ hình hóa tốn thực tế Thuật tốn (algorithms) Ngơn ngữ giả tinh chế bước Mơ hình hóa tốn thực tế • Để giải toán thực tế máy tính: – Phát biểu lại tốn thực tế thành tốn hình thức (mơ hình tốn) – Lựa chọn thuật tốn có/ Thiết kế thuật tốn để giải tốn hình thức – Viết chương trình ngơn ngữ giả – Viết chương trình ngơn ngữ lập trình – Test Mơ hình hóa tốn thực tế: Ví dụ • Bài tốn hình thức: Tơ màu đỉnh đồ thị • Bài tốn thực tế: Tơ màu nước đồ giới Mơ hình hóa tốn thực tế: Ví dụ • Bài tốn thực tế: Tối ưu hố việc điều khiển giao thơng đèn • Có ngã năm hình vẽ • C E đường chiều • Thiết kế nhóm đường cho đồng thời mà khơng đụng • Số nhóm D C E B A Mơ hình hóa tốn thực tế: Ví dụ (tt) • Mơ hình hố: • Có 13 lối đi: AB, AC, AD, BA, BC, BD, DA, DB, DC, EA, EB, EC, ED • Các nhóm lối đi đồng thời • Số nhóm D C E B A Mơ hình hóa tốn thực tế: Ví dụ (tt) • Mỗi lối biểu diễn đỉnh, hai lối đồng thời, nối cạnh • Các lối đi đồng thời tương ứng với đỉnh đồ thị tơ màu • Bài tốn tơ màu đồ thị D C E B A B A A C A D B A B C B D D A D B D C E A E B E C E D Thuật toán (algorithms) Thuật toán (Algorithms) dãy thao tác theo trật tự định để giải vấn đề Các đặc trưng thuật tốn • Tính kết thúc/ Tính hữu hạn – Một thuật tốn phải kết thúc sau hữu hạn bước số bước lớn • Tính xác định – Mọi bước thuật toán xác định rõ ràng, xác ln thực • Có đầu vào, đầu – Mỗi thuật tốn có số giá trị nhận vào (Input values, đơn giản Input) – Mỗi thuật tốn có số giá trị đưa (Output values, đơn giản Output) Các đặc trưng thuật tốn • Tính tổng qt – Thuật tốn khơng áp dụng cho tốn định mà áp dụng cho lớp tốn có đầu vào tương tự • Tính hiệu – Thời gian – Tài nguyên máy – Độ phức tạp thuật tốn Ngơn ngữ biểu diễn thuật tốn • Ngơn ngữ tự nhiên – Là ngơn ngữ sử dụng đời sống – Thuật toán trình bày cách mơ tả bước thực • Mã giả (Pseudocode) – Là kết hợp ngôn ngữ tự nhiên với cấu trúc lệnh ngơn ngữ lập trình – Thuật tốn trình bày mã giả gần với chương trình giữ “tự nhiên” suy nghĩ người lập trình • Ngơn ngữ sơ đồ - Lưu đồ (Flowcharts) – Các bước thuật toán thể hình khối, nối với mũi tên Do cịn gọi ngơn ngữ sơ đồ khối – Thuật tốn trình bày cách ngắn gọn, làm bật cấu trúc suy luận, dễ theo dõi q trình xử lý Thuật tốn “tham ăn” giải tốn tơ màu đồ thị • Để số màu phải sử dụng màu phải tô cho nhiều đỉnh – Chọn đỉnh chưa tơ màu tơ màu C – Duyệt danh sách đỉnh chưa tô màu Đối với đỉnh chưa tô màu, xác định xem có kề với đỉnh tơ màu C khơng Nếu khơng có, tơ màu C MINH HOẠ Dùng màu tơ Các lối có màu đồng thời Ngôn ngữ giả tinh chế bước (Pseudo-language and stepwise refinement) • Ngơn ngữ giả kết hợp ngôn ngữ tự nhiên với cấu trúc câu lệnh ngôn ngữ lập trình cụ thể • Tinh chế bước: Từ mệnh đề tổng quát, ta chia thành ý cụ thể Tinh chế thuật toán “tham ăn” tốn tơ màu đồ thị thuật tốn mức 0: void GREEDY (GRAPH *G, SET *Newclr ) { /*1*/ Newclr = ∅; /*2*/ while (còn đỉnh v chưa tô màu chưa xét G) if (v không nối với đỉnh Newclr) /*3*/ { /*4*/ /*5*/ đánh dấu v tô màu; thêm v vào Newclr; } } thuật toán mức 1: void GREEDY (GRAPH *G, SET *Newclr ) { /*1*/ Newclr= ∅; /*2*/ while (cịn đỉnh v chưa tơ màu chưa xét G) { /*3.1*/ found=0; /*3.2*/ while (mỗi đỉnh w Newclr) /*3.3*/ if (có cạnh nối v w) /*3.4*/ found=1; /*3.5*/ if (found==0) { /*4*/ đánh dấu v tô màu; /*5*/ thêm v vào Newclr; } } } Tinh chế thuật toán “tham ăn” tốn tơ màu đồ thị (thuật tốn mức 2) void GREEDY ( GRAPH *G, LIST *Newclr ) { int found; int v,w ; Newclr= ∅; v= đỉnh chưa tô màu G; while (vnull) { found=0; w=đỉnh newclr; while( wnull) && (!found) { if (có cạnh nối v w) found=1; else w= đỉnh newclr; } //while If (!found) { Đánh dấu v tô màu; Thêm v vào Newclr; } v= đỉnh chưa tô màu G; } } KIỂU DỮ LIỆU-CẤU TRÚC DỮ LIỆU • Kiểu liệu tập hợp giá trị tập hợp phép toán giá trị • Kiểu liệu có hai loại kiểu liệu sơ cấp kiểu liệu có cấu trúc hay cịn gọi cấu trúc liệu • Kiểu liệu sơ cấp kiểu liệu mà giá trị liệu đơn • Kiểu liệu có cấu trúc (cấu trúc liệu) kiểu liệu mà giá trị liệu kết hợp giá trị khác KIỂU DỮ LIỆU TRỪU TƯỢNG • Là mơ hình tốn học với tập hợp phép tốn • Là kiểu liệu định nghĩa mức khái niệm (conceptual), chưa cài đặt cụ thể ngơn ngữ lập trình • KIỂU DỮ LIỆU TRỪU TƯỢNG (tt) • Khi cài đặt kiểu liệu trừu tượng ngơn ngữ lập trình cụ thể, phải thực hai nhiệm vụ: Biểu diễn kiểu liệu trừu tượng cấu trúc liệu kiểu liệu trừu tượng khác cài đặt Viết chương trình thực phép toán kiểu liệu trừu tượng mà ta thường gọi cài đặt phép toán Thank you! ... • Kiểu liệu có hai loại kiểu liệu sơ cấp kiểu liệu có cấu trúc hay cịn gọi cấu trúc liệu • Kiểu liệu sơ cấp kiểu liệu mà giá trị liệu đơn • Kiểu liệu có cấu trúc (cấu trúc liệu) kiểu liệu mà... cạnh nối v w) found =1; else w= đỉnh newclr; } //while If (!found) { Đánh dấu v tô màu; Thêm v vào Newclr; } v= đỉnh chưa tô màu G; } } KIỂU DỮ LIỆU-CẤU TRÚC DỮ LIỆU • Kiểu liệu tập hợp giá trị... lập trình • KIỂU DỮ LIỆU TRỪU TƯỢNG (tt) • Khi cài đặt kiểu liệu trừu tượng ngôn ngữ lập trình cụ thể, phải thực hai nhiệm vụ: Biểu diễn kiểu liệu trừu tượng cấu trúc liệu kiểu liệu trừu tượng