DS&A Reviews
-
Upload
thien-nguyen -
Category
Education
-
view
306 -
download
1
Transcript of DS&A Reviews
![Page 1: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/1.jpg)
“ALGORITHMS + DATA STRUCTURES = PROGRAMS”
NIKLAUS WIRTH, 1976
Thiện Nguyễn
August 26th, 2012
DATA STRUCTURES & ALGORITHM
![Page 2: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/2.jpg)
CẤU TRÚC DỮ LIỆU & THUẬT TOÁN ĐỂ LÀM GÌ?
• Ứng dụng để giải quyết các bài toán thực tế
• Cài đặt các chương trình • Tiền đề cho các môn học, lĩnh vực
khác của Máy tính • …
![Page 3: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/3.jpg)
Là một tập hữu hạn các chỉ dẫn để máy tính giải quyết một bài toán.
Thuật toán là gì?
![Page 4: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/4.jpg)
• Tính đơn nghĩa • Tính dừng • Tính đúng • Tính phổ dụng • Tính khả thi.
Các tính chất của Thuật toán
![Page 5: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/5.jpg)
Là khái niệm dùng để đánh giá thời gian thực thi của một thuật toán độc lập với máy tính
Độ phức tạp của Thuật toán
![Page 6: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/6.jpg)
• Quy tắc Loại bỏ hằng số • Quy tắc Cực đại • Quy tắc cộng • Quy tắc nhân.
Các xác định Độ phức tạp của Thuật toán
![Page 7: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/7.jpg)
• O(n) • O(n^k) • O(log(n)) • O(n.log(n)) • O(a^n) • O(n!).
Các độ phức tạp thường gặp
![Page 8: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/8.jpg)
• Danh sách tuyến tính • Hàng đợi • Ngăn xếp • Cây.
Cấu trúc dữ liệu
![Page 9: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/9.jpg)
Là một cấu trúc dữ liệu mà mỗi phần tử chỉ tồn tại tối đa một phần tử liền sau.
Danh sách tuyến tính
![Page 10: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/10.jpg)
Danh sách
Thường
Không thứ tự
Có thứ tự
Ràng buộc
FIFO (queue)
LIFO (stack)
Phân loại Danh sách tuyến tính
![Page 11: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/11.jpg)
• Không có ràng buộc đối với các thao tác trên danh sách.
• Không có ràng buộc khi chèn/xóa phần tử
• Có 2 loại: o Có thứ tự o Không thứ tự.
Danh sách tổng quát
![Page 12: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/12.jpg)
• Ràng buộc đối với các thao tác trên danh sách
• Ràng buộc khi chèn/xóa phần tử. • Có 2 loại: o Queue (FIFO: First-In-First-Out) o Stack (LIFO: Last-In-First-Out).
Danh sách ràng buộc
![Page 13: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/13.jpg)
• Dùng mảng: int a[20];
Cài đặt danh sách • Dùng DS Liên kết: struct Node{ int data; int* next; } struct List{ Node* pHead; int count; }
![Page 14: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/14.jpg)
• Dùng mảng: class Queue{ private: int data[100]; int count; int front; int rear;
public: Queue(); int size(); int front(); int rear(); bool isEmpty(); bool isFull(); bool enQueue(int k); bool deQueue(int k); }
Cài queue dùng mảng Cách cài đặt Queue
![Page 15: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/15.jpg)
Cách cài đặt Queue
class Queue{ private: int* front; int* rear; int count;
public: Queue(); int size(); int front(); int rear(); bool isEmpty(); bool isFull(); bool enQueue(int k); bool deQueue(int k); }
• Dùng danh sách liên kết:
Cài queue bằng danh sách liên kết
![Page 16: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/16.jpg)
Cách cài đặt Stack
class Stack{ private: int data[100]; int count;
public: Stack() int size(); bool isEmpty(); bool isFull(); int top(); void push(int k); int pop(); }
• Dùng mảng:
Cài stack bằng mảng
Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng mà các method push, pop có thể trả về void, bool hay int
![Page 17: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/17.jpg)
Cách cài đặt Stack
class Stack{ private: Node* head Node* tail int count int count;
public: Stack(); int size(); bool isEmpty(); bool isFull(); int top(); void push(int k); int pop(); }
• Dùng danh sách liên kết:
Cài stack bằng danh sách liên kết
Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng mà các method push, pop có thể trả về void, bool hay int
![Page 18: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/18.jpg)
Tree (Cây)
Cây là một cấu trúc dữ liệu gồm một tập hữu hạn các node (nút), giữa các node có một quan hệ phân cấp gọi là quan hệ “cha – con”.
![Page 19: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/19.jpg)
Các khái niệm trong Cây
• Root (node gốc) • Leaf (node lá) • Branch (node nhánh) • Level (cấp) • Height/Depth (chiều cao/chiều sâu) • Sub-tree (cây con).
![Page 20: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/20.jpg)
Cây nhị phân
• Là cây có level bằng 2
Cây k-phân: Cây có level bằng k.
![Page 21: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/21.jpg)
Cài đặt Cây nhị phân
struct Node{ int data; int* left, right; } struct Tree{ Node* root; int count; }
![Page 22: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/22.jpg)
Các phép duyệt cây
• Deep First Traverse: Pre-Oder In-Order Post-Oder
• Breadth First Traverse.
![Page 23: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/23.jpg)
Deep First Traverse
Pre-Oder (NLR)
F->B->A->D->C->E->G->I->H.
![Page 24: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/24.jpg)
Deep First Traverse
In-Oder
A->B->C->D->E->F->G->H->I.
![Page 25: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/25.jpg)
Deep First Traverse
Post-Oder
A->C->E->D->B->H->I->G->F.
![Page 26: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/26.jpg)
MỘT SỐ THƯ VIỆN TRONG C++
• <cstdio> • <iostream> • <cstring> • <cmath>
• <queue> • <stack> • <vector> • <algorithm> • …
![Page 27: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/27.jpg)
THỰC HÀNH NHƯ THẾ NÀO?
• Giải đề trực tuyến.
![Page 28: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/28.jpg)
SIMPLE
• Insomnia cure Problem: http://codeforces.com/problemset/problem/148/A
• Tram Problem: http://codeforces.com/problemset/problem/116/A
• cAPS lOCK Problem: http://codeforces.com/problemset/problem/131/A
• …
![Page 29: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/29.jpg)
SORTING
• Twins Problem: http://codeforces.com/problemset/problem/148/A Solution: http://codeforces.com/contest/160/submission/1646544
![Page 30: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/30.jpg)
DFS
• Party Problem: http://codeforces.com/problemset/problem/115/A Solution: http://codeforces.com/contest/115/submission/703831
![Page 31: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/31.jpg)
GRAPH
• Friend Problem: http://codeforces.com/problemset/problem/94/B Solution: http://codeforces.com/contest/94/submission/787035
![Page 32: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/32.jpg)
QUESTIONS?
![Page 33: DS&A Reviews](https://reader034.fdocuments.net/reader034/viewer/2022052622/5591255e1a28ab85368b4726/html5/thumbnails/33.jpg)
THANKS FOR LISTENING!