Khoa Công nghệ Thông tin – Đại học Công Nghệ

Slides:



Advertisements
Similar presentations
ĐỀ TÀI: GIỚI THIỆU CÁC HÀM LƯỢNG GIÁC THEO SÁCH PRECALCULUS JAMES STEWART – LOTHAR REDLIN – SALEEM WATSON.
Advertisements

Môn: NGỮ VĂN Năm học: PHÒNG GD&ĐT NAM TR À MY TRƯỜNG PTDTBT THCS TRÀ DON Trà Don, ngày 26 tháng 10 năm 2015.
Giáo viên thực hiện: Lò Thị Nhung Đơn vị công tác: Trường THCS Búng Lao, huyện Mường Ảng, tỉnh Điện Biên. GIÁO ÁN ĐỊA LÍ 7 Chương II: Môi trường đới ôn.
HÀNH CHÍNH NHÀ NƯỚC TỪ CÁCH MẠNG THÁNG TÁM ĐẾN NAY
Quản trị Rủi ro thiên tai và Biến đổi khí hậu
Báo cáo Cấu trúc đề thi PISA và Các dạng câu hỏi thi PISA
MỘT SỐ TÁC GIẢ TIÊU BIỂU ( ) Nhóm tự lực văn đoàn và phong trào thơ mới. Ngoài ra còn có các nhóm: Phong hóa, Ngày nay, Hà Nội báo (Huy Thông,
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
XÂY DỰNG VÀ PHÁT TRIỂN CHƯƠNG TRÌNH ĐÀO TẠO THEO ĐỀ XƯỚNG CDIO
Rainforest Alliance đào tạo cho các nông trại trà ở Việt Nam
PHẦN 1. HỆ ĐIỀU HÀNH WINDOWS. 2 Nội dung trình bày  1.1. Thao tác cơ bản sử dụng máy tính  1.2. Màn hình nền desktop  1.3. Quản lý tệp tin và thư mục.
Qua hàng ngàn năm dựng nước và giữ nước, dân tộc ta đã để lại nhiều bài học vô giá. Nổi bật trong đó là tinh thần đoàn kết, ý thức cộng đồng. Hai truyền.
L/O/G/O NGUYÊN LÝ KẾ TOÁN Nguyễn Hữu Quy (MBA,CPA,APC)
1 ĐỒNG NAI ĐÁNH GIÁ TÌNH HÌNH VÀ ĐỀ XUẤT ÁP DỤNG HIỆU QUẢ MÔ HÌNH KINH TẾ DƯỢC TẠI BỆNH VIỆN ĐA KHOA ĐỒNG NAI NĂM 2017 Học viên: Nhóm 5 _ PP111.
TRƯỜNG ĐẠI HỌC THĂNG LONG
Bài giảng e-Learning Bài giảng e-Learning là sản phẩm được tạo ra từ các công cụ tạo bài giảng (authoring tools), có khả năng tích hợp đa phương tiện.
Thực hiện các cuộc họp quan trọng
Sứ Mệnh GoCoast 2020 được thành lập bởi thống đốc Phil Bryant thông qua điều hành để phục vụ như là hội đồng cố vấn chính thức cho việc phân phối quỹ nhận.
QUẢN TRỊ THÀNH TÍCH Performance Management
BÀI 2. CẤU TẠO VÀ CÁC THIẾT BỊ CỦA MÁY TÍNH ĐIỆN TỬ
TÌM HIỂU VỀ WEB SERVICES VÀ XÂY DỰNG MỘT WEB SERVICE
Tham gia Intel ISEF 2013 và một số kinh nghiệm chia sẻ
Giới thiệu chương trình trách nhiệm xã hội của doanh nghiệp
KHAI PHÁ DỮ LIỆU (DATA MINING)
THÔNG TIN MÔN HỌC Quản trị chuỗi cung ứng (Supply Chain Management): 45 tiết Tài liệu nghiên cứu Quản lý chuỗi cung ứng –Th.S. Nguyễn Kim Anh, Đại học.
Công nghệ phần mềm Thẩm định và kiểm định.
THAM VẤN TÂM LÝ Bài Giới Thiệu.
Software testing Kiểm thử phần mềm
BÁO CÁO DỰ ÁN CIBOLA Đo lường mức độ hiệu quả của Media
Ngôn ngữ lập trình C/C++
KỸ THUẬT LẬP TRÌNH GV: Phạm Thị Xuân Diệu
Hạ Long – Cát Bà Sáng kiến Liên minh Bui Thi Thu Hien
Đức Hồng Y Nguyễn Văn Thuận cầu bầu
WELCOME TO MY PRESENTATION
Module 6 – Managing for Sustainability
Khởi động SXSH với công cụ quản lý nội vi 5S
Hệ Thống Quản Lý An Toàn Thực Phẩm
BÀI TẬP ÔN LUYỆN IC3 SPARK
CHẾ ĐỘ PHÁP LÝ VỀ CÔNG TY CỔ PHẦN
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
MKTNH Version 3 Giảng viên: ThS. Thái Thị Kim Oanh
Bài 2: Từ tiêu chuẩn sức khoẻ tới nơi làm việc lành mạnh
Chương 9 Truyền thông và Mạng
Chương 6 Thiết kế hướng đối tượng
DI SẢN THẾ GIỚI WORLD HERITAGE CỔ THÀNH HUẾ VIỆT NAM
TRƯỜNG CAO ĐẲNG TÀI CHÍNH HẢI QUAN KHOA: KINH DOANH QUỐC TẾ
UBND TỈNH ĐIỆN BIÊN SỞ GIÁO DỤC VÀ ĐÀO TẠO
Con trỏ và mảng cấp phát động trong C++
KỸ THUẬT LẬP TRÌNH GV: Phạm Thị Xuân Diệu
Hướng dẫn THU THẬP, BẢO QUẢN VÀ VẬN CHUYỂN MẪU BỆNH PHẨM NGHI NHIỄM MERS-CoV PTN các tác nhân virut liên quan đến bệnh truyền từ động vật sang người.
Quản lý con người Quản lý người làm việc như những cá nhân và theo nhóm.
KỸ NĂNG HỌC TẬP KHOA QUẢN TRỊ KINH DOANH ThS. NGUYỄN HOÀNG SINH
Operators and Expression
… nghe kể rằng ... Click.
Trách nhiệm giải trình của doanh nghiệp ở diện rộng
QUYỀN LỰC VÀ MÂU THUẪN TRONG NHÓM
Chương 2 Căn bản về Cung và Cầu 1.
QUẢN TRỊ TÍNH ĐA DẠNG THÔNG QUA NHIỀU HOẠT ĐỘNG KINH DOANH
Kế hoạch Quản lý Hóa chất & Tích hợp vào Quy trình Nhà máy và Quản lý
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
HƯỚNG DẪN MÃ HÓA BỆNH TẬT, TỬ VONG THEO ICD - 10
Chương 4 – lớp Liên Kết Dữ Liệu
OBJECT-ORIENTED ANALYSIS AND DESIGN WITH UML 2.0
NHÂN QUYỀN LÀ GÌ? Dẫn Nhập Nhân quyền và thu thập tài liệu: Bài Một.
Giảng viên: Lương Tuấn Anh
HỌC PHẦN: CÀI ĐẶT VÀ BẢO TRÌ
Trường CĐ CNTT HN Việt Hàn
KHAI THÁC THỦY SẢN ĐẠI CƯƠNG
Chương 4: Tập gõ 10 ngón Chương 2: Học cùng máy tính
Presentation transcript:

Khoa Công nghệ Thông tin – Đại học Công Nghệ Bài 8: KDLTT hàng đợi Khoa Công nghệ Thông tin – Đại học Công Nghệ Cấu trúc dữ liệu và giải thuật HKI, 2015-2016

Nội dung chính Thư viện khuôn mẫu chuẩn STL KDLTT hàng đợi Cài đặt bằng mảng Cài đặt bằng DSLK Ứng dụng của hàng đợi diepht@vnu

Danh sách liên kết (List) Tổng quan Cấu trúc dữ liệu Tuyến tính Truy cập ngẫu nhiên/trực tiếp Thành phần đồng nhất Mảng (Array) Thành phần không đồng nhất Bản ghi (Record) Truy cập tuần tự Tổng quát Danh sách liên kết (List) Vào-trước-ra-trước Hàng đợi (Queue) Vào-sau-ra-trước Ngăn xếp (Stack) Không tuyến tính Tập hợp (Set) http://www.juniata.edu/faculty/kruse/cs2/ch04a1.gif diepht@vnu

Thư viện khuôn mẫu chuẩn STL <array> <vector> <deque> <forward_list> <list> <stack> <queue> <priority_queue> <set> <multiset> <map> <multimap> <unordered_set> <unordered_multiset> <unordered_map> <unordered_multimap> <bitset> <valarray> diepht@vnu

Hàng đợi Hàng đợi là gì? Tính chất Là một danh sách nhưng các phép toán chỉ được thực hiện ở hai đỉnh của danh sách. Một đỉnh gọi là đầu hàng, đỉnh còn lại gọi là cuối hàng. Tính chất Vào trước ra trước (First In First Out: FIFO) diepht@vnu

KDLTT hàng đợi Trừu tượng hóa cấu trúc hàng đợi Đặc tả dữ liệu A = (a0, a1, …, an) trong đó a0 là đầu hàng đợi, an là cuối hàng đợi Đặc tả các phép toán Thêm phần tử x vào cuối hàng đợi: enqueue(x) Loại phần tử ở đầu hàng đợi: dequeue() Kiểm tra hàng đợi có rỗng hay không: isEmpty() Kiểm tra hàng đợi hết chỗ hay chưa: isFull() Đếm số phần tử của hàng đợi: size() Trả về phần tử ở đầu hàng đợi: front() diepht@vnu

Giao diện C++ của KDLTT hàng đợi template <typename Object> class Queue { public: int size(); bool isEmpty(); Object& front() throw(EmptyQueueException); void enqueue(Object o); Object dequeue() throw(EmptyQueueException); }; diepht@vnu

Minh họa các thao tác thao tác output hàng đợi enqueue(10) (10) (10, 5) front() 10 dequeue() (5) size() 1 () lỗi: hàng đợi rỗng isEmpty() true enqueue(8) (8) diepht@vnu

STL: queue::push/pop/front #include <iostream> // std::cin, std::cout #include <queue> // std::queue #include <conio.h> using namespace std; int main(){ queue<int> myqueue; for(int i = 1; i <= 4; i++) myqueue.push(i * i); cout << "myqueue chua: "; while(!myqueue.empty()){ cout << ' ' << myqueue.front(); myqueue.pop(); } cout << '\n'; getch(); return 0; diepht@vnu

Ứng dụng của hàng đợi Trực tiếp Gián tiếp Danh sách hàng đợi Quản lý truy cập tới các tài nguyên dùng chung (ví dụ máy in) Multiprogramming Gián tiếp Cấu trúc dữ liệu phụ trợ cho các thuật toán Một phần của CTDL khác Tại sao các hệ điều hành hiện đại hỗ trợ môi trường đa nhiệm? Phân biệt multitasking, multiprogramming và multiprocessing? Các hệ điều hành hiện đại hỗ trợ môi trường đa nhiệm vì: tăng hiệu suất sử dụng CPU và tăng tốc độ xử lý Multitasking (đa nhiệm): thực hiện nhiều nhiệm vụ cùng một lúc, CPU sẽ luân phiên xử lý các tiến trình trong một khoảng thời gian rồi chuyển sang cho tiến trình khác. VD: nghe nhạc và duyệt web đồng thời Multiprogramming (đa chương): có nhiều hơn một chương trình đang nằm trong bộ nhớ để được lựa chọn chuyển giao cho CPU thực thi. Ví dụ: mở Word, Excel, Powerpoint cùng lúc, trong khi chúng ta sử dụng Word thì Excel và Powerpoint vẫn thường trực trong bộ nhớ mặc dù chúng không thực hiện việc gì cả Multiprocessing (đa tiến trình): sử dụng nhiều hơn 1 CPU để có thể xử lý song song cùng lúc nhiều tiến trình. diepht@vnu

Cài đặt hàng đợi bởi mảng Dùng một mảng cỡ N theo kiểu vòng tròn Dùng 2 biến để theo dõi đầu (front) và đuôi (rear) hàng đợi f là chỉ số của phần tử front r là chỉ số của ô liền sau phần tử rear Ô r trong mảng sẽ luôn rỗng cấu hình bình thường Q 1 2 r f cấu hình bọc vòng quanh Q 1 2 f r diepht@vnu

Các thao tác (1/3) Ta sử dụng phép chia lấy dư Algorithm size() return (N - f + r) mod N Algorithm isEmpty() return (f = r) Q 1 2 r f Q 1 2 f r diepht@vnu

Các thao tác (2/3) Thao tác enqueue ném một ngoại lệ nếu mảng đã đầy Algorithm enqueue(o) if size() = N  1 then throw FullQueueException else Q[r]  o r  (r + 1) mod N Thao tác enqueue ném một ngoại lệ nếu mảng đã đầy Đây là ngoại lệ do cài đặt Q 1 2 r f Q 1 2 f r diepht@vnu

Các thao tác (3/3) Đây là ngoại lệ xác định cho KDLTT hàng đợi Algorithm dequeue() if isEmpty() then throw EmptyQueueException else o  Q[f] f  (f + 1) mod N return o Thao tác dequeue ném ngoại lệ nếu hàng đợi rỗng Đây là ngoại lệ xác định cho KDLTT hàng đợi Q 1 2 r f Q 1 2 f r diepht@vnu

Cài đặt hàng đợi bởi DSLK đơn Ta có thể cài đặt hàng đợi bởi một danh sách liên kết đơn Phần tử front được lưu ở nút đầu Phần tử rear được lưu ở nút cuối Không gian sử dụng là O(n) và mỗi thao tác thực hiện trong thời gian O(1) r các nút f  các phần tử diepht@vnu

Ứng dụng: Lập lịch quay vòng (Round Robin Schedulers) Có thể cài đặt một bộ lập lịch quay vòng bằng một hàng đợi, Q, bằng việc lặp lại các bước sau: e = Q.dequeue() Service element e Q.enqueue(e) The Queue Shared Service 1 . Deque the next element 3 Enqueue the serviced element 2 Service the diepht@vnu

Bài tập Viết chương trình cài đặt hàng đợi bằng mảng. Viết chương trình cài đặt hàng đợi bằng danh sách liên kết đơn. Tính độ phức tạp cho cài đặt ở câu 1, 2 Cài đặt hàng đợi bằng mảng vòng. diepht@vnu

Chuẩn bị tuần tới Thực hành: Cài đặt KDLTT ngăn xếp và hàng đợi Lý thuyết: Đọc Chương 8 giáo trình (Cây) diepht@vnu