1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mô tả thuật toán queue bằng danh sách liên kết

23 290 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,34 MB

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI KHOA CƠNG NGHỆ THƠNG TIN Báo cáo mơn học ĐỒ ÁN LẬP TRÌNH CƠ BẢN Học kỳ II – Năm học 2019 – 2020 Tên đề tài: MƠ PHỎNG THUẬT TỐN QUEUE BẰNG DANH SÁCH LIÊN KẾT Sinh viên: LÊ VĂN AN(69DCTM22) Giảng viên hướng dẫn: LƯƠNG HOÀNG ANH HÀ NỘI – 07/2020 Mục lục Chương 1.Giới thiệu tổng quát thuật toán QueueError! Bookmark not defined 1.1 Giới thiệu thuật toán: 1.2 Ví dụ: Chương 2.Nội dung cấu trúc thuật toán 2.1 Khái niệm danh sách liên kết: 2.2 Định nghĩa hàng đợi Queue: 2.3 Các kỹ thuật hàng đợi Queue: .3 2.4 Ví dụ: Chương 3.Mơ tả thuật tốn: 3.1 Biểu diễn cấu trúc liệu hàm Queue: 3.2 Các thao tác với thuật toán: .9 3.3 Hoạt động enqueue cấu trúc liệu hàng đợi 11 3.4 Hoạt động dequeue cấu trúc liệu hàng đợi 11 Chương 4.Ứng dụng: 12 4.1 Khi lập lịch CPU 12 4.2 Khi in ấn 12 4.3 Ứng dụng queue Amazon Web Services 13 Lời cảm ơn Tài liệu tham khảo Chương Giới thiệu tổng quan thuật toán Queue danh sách liên kết 1.1 Giới thiệu thuật toán: -Trong khoa học máy tính , hàng đợi tập hợp thực thể trì theo trình tự sửa đổi cách thêm thực thể đầu chuỗi loại bỏ thực thể khỏi đầu chuỗi Theo quy ước, phần cuối chuỗi mà phần tử thêm vào gọi phần sau, phần đuôi phần sau hàng đợi phần cuối mà phần tử loại bỏ gọi phần đầu phần trước hàng đợi, tương tự từ sử dụng người xếp hàng để chờ đợi hàng hóa dịch vụ -Hoạt động thêm phần tử vào phía sau hàng đợi gọi enqueue hoạt động loại bỏ phần tử từ phía trước gọi dequeue Các hoạt động khác cho phép, thường bao gồm hoạt động peek hoạt động front trả giá trị phần tử xử lý mà khơng cần xử lý -Các hoạt động hàng đợi làm cho trở thành cấu trúc liệu nhập trước xuất trước (FIFO) Trong cấu trúc liệu FIFO, phần tử thêm vào hàng đợi phần tử bị xóa Điều tương đương với yêu cầu một yếu tố thêm vào, tất yếu tố thêm vào trước phải loại bỏ trước yếu tố gỡ bỏ Hàng đợi ví dụ cấu trúc liệu tuyến tính , hay trừu tượng sưu tập Hàng đợi phổ biến chương trình máy tính, nơi chúng triển khai cấu trúc liệu kết hợp với thói quen truy cập, cấu trúc liệu trừu tượng ngôn ngữ hướng đối tượng lớp Thực phổ biến đệm tròn danh sách liên kết -Hàng đợi cung cấp dịch vụ nghiên cứu khoa học máy tính , vận chuyển vận hành thực thể khác liệu, đối tượng, người kiện lưu trữ tổ chức để xử lý sau Trong bối cảnh này, hàng đợi thực chức đệm Một cách sử dụng hàng đợi khác việc thực tìm kiếm theo chiều rộng 1.2 Ví dụ: Hình ảnh hàng đợi hay gặp đời sống hàng ngày, hình ảnh việc xếp hàng mô dễ hiểu cho cấu trúc liệu hàng đợi(queue): Người vào tiến đón đầu tiên;Người vào bắt buộc phải xếp hàng phía cuối \ Chương 2.Nội dung cấu trúc thuật toán 2.1 Khái niệm danh sách liên kết đơn: -Một Danh sách liên kết (Linked List) dãy cấu trúc liệu kết nối với thông qua liên kết (link) Hiểu cách đơn giản Danh sách liên kết cấu trúc liệu bao gồm nhóm nút (node) tạo thành chuỗi Mỗi nút gồm liệu nút tham chiếu đến nút chuỗi -Danh sách liên kết cấu trúc liệu sử dụng phổ biến thứ hai sau mảng Dưới khái niệm liên quan tới Danh sách liên kết:  Link (liên kết): link Danh sách liên kết lưu giữ liệu gọi phần tử  Next: Mỗi liên kết Danh sách liên kết chứa link tới next link gọi Next  First: Danh sách liên kết bao gồm link kết nối tới first link gọi First 2.2 Định nghĩa hàng đợi Queue: -Hàng đợi(tiếng anh: Queue) cấu trúc liệu dùng để lưu giữ đối tượng theo chế FIFO (viết tắt từ tiếng Anh: First In First Out), nghĩa “vào trước trước” -Hàng đợi hỗ trợ thao tác:  Add-Enqueue():Thêm đối tượng vào cuối(rear)Queue  Remove-Dequeue():Lấy đối tượng đầu(front)queue khỏi queue  Peek:Examine the front element 2.3 Các kỹ thuật hàng đợi Queue: -Có nhiều kỹ thuật hàng đợi:  FIFO(First in first out):Vào trước trước  PQ(Priority queue):Hàng đợi ưu tiên  FQ(Fair queue):Hàng đợi cân -FIFO kĩ thuật xếp hàng vào trước trước Các gói đến trước gói xử lý.Khi hàng đợi đầy có tắc nghẽn xảy gói đến bị loại bỏ.Hàng đợi FIFO dựa vào hệ thống đầu cuối để điều khiển tắc nghẽn thông qua chế điều khiển tắc nghẽn.Do loại hàng đợi đơn giản nhiều không điều khiển tắc nghẽn nên ta thường xét loại hàng đợi hiệu hơn:hàng đợi ưu tiên (PQ).hàng đợi có trọng số(WQ),hàng đợi cân bằng(PQ) 2.3.1 Hàng đợi FIFO: -FIFO hàng đợi mặc định sử dụng hầu hết router giới.Hoạt động FIFO.Các gói đến từ luồng khác đối xử công bằng cách đưa vào hàng đợi theo trật tự đến (gói đến trước đưa vào trước phục vụ trước) -Hàng đợi hoạt động nơi lưu trữ gói để tránh việc loại bỏ gói khơng cần thiết có dấu hiệu tắc nghẽn.Khi có tắc nghẽn xảy hàng đợi tràn tất gói đến bị loại bỏ.Hàng đợi FIFO sử dụng hầu hết cấc router ,nó đơn giản khơng phải định cấu hình cho mà việc sử dụng ln.Trong router cisco, khơng có kế hoạch hàng đợi khác cấu hình, tất giao diện (ngoại trừ giao diện có tốc độ nhỏ nhỏ luồng E1)đều sử dụng hàng đợi FIFO mặc định Tốc độ xử lý gói phải nhanh tốc đọ gói đến hàng đợi IFO tránh tượng tắc nghẽn mạng (hàng đợi IF1 rỗng),khi tốc độ xử lý thấp so với tốc độ gói vào , có nghĩa tốc độ nhỏ tốc độ gói vào (hàng đợi đầu dễ bị tràn )thì xảy tắc nghẽn có nhiều gói vào mạng ,và vấn đề xảy gói đến sau bị loại bỏ 2.3.2 Hàng đợi ưu tiên PQ: -Kĩ thuật sử dụng trường hợp đa hàng đợi, hàng đợi có mức ưu tiên khác nhau, hàng đợi có mức độ ưu tiên cao ưu tiên phục vụ trước.Khi có tắc nghẽn xảy gói hàng đợi có độ ưu tiên thấp bị loại bỏ.Có vấn đề kĩ thuật này:khi hàng đợi có độ ưu tiên cao nhiều gói hàng đợi có độ ưu tiên thấp không phục vụ.Các gói phân loại xếp vào hàng đợi tùy thuộc vào thơng tin bên gói Tuy nhiên kỹ thuật dễ bị lạm dụng người sử dụng hay ứng dụng ấn định độ ưu tiên không cho phép -Vậy PQ cho phép định nghĩa luồng lưu lượng ưu tiên mạng ?Ta cấu hình độ ưu tiên lưu lượng ,có thể định nghĩa loạt lọc sở cấc đặc điểm gói mạng qua router để xếp các lưu lượng hàng đợi Hàng đợi có độ ưu tiên cao phục vụ trước hàng đợi rỗng, sau hàng đợi có độ ưu tiên thấp phục vụ lần lượt.Câu hỏi đặt PQ làm việc nào? Trong trình truyền dẫn hàng đợi có độ ưu tiên cao đối xử ưu tiên hàng đợi có mức ưu tiên thấp hơn,hay nói cách khác lưu lượng quan trọng gán mức ưu tiên cao lưu lượng có mức ưu tiên cao truyền trước,còn lại lưu lượng quan trọng Các gói phân loại dựa tiêu chuẩn phân loại người sử dụng đặt số hàng đợi đầu với độ ưu tiên:độ ưu tiên cao,trung bình,bình thường(khơng ưu tiên),ưu tiên thấp.Các gói khơng ấn định độ ưu tiên đưa tới hàng đợi bình thường.Khi gói gửi tới giao diện đầu ra,các hàng đợi ưu tiên giao diện quét gói theo thứ tự độ ưu tiên giảm dần.Hàng đợi có độ ưu tiên cao quét đầu tiên,sau đến hàng đợi trung bình tiếp tục hàng đợi có độn ưu tiên khác Gói đứng đầu hàng đợi có độ ưu tiên cao truyền Thủ tục lặp lại có gói truyền Chiều dài lớn hàng đợi định nghĩa theo chiều dài giới hạn.Khi hàng đợi dài chiều dài hàng đợi giới hạn gói đến sau bị loại bỏ -Cơ chế hàng đợi đầu ưu tiên sử dụng để quản lý lưu lượng từ tất giao thức mạng.PQ cung cấp cách đối xử ưu tiên cho luồng lưu lượng có độ ưu tiên cao -Các gói phân biệt kỹ thuật PQ -Danh sách ưu tiên tập luật lệ mơ tả gói ấn định độ ưu tiên hàng đợi.Ngồi mơ tả độ ưu tiên mặc định giới hạn kích thước hàng đợi cấc hàng đợi ưu tiên -Các gói phân loại theo :  Loại giao thức giao thức  Giao diện đầu vào  Kích thước gói tin  Các Fragment  Danh sách truy nhập Tất lưu lượng dùng để quản lý điều khiển mạng ấn định độ ưu tiên cao để trường hợp có tắc nghẽn xảy chúng ưu tiên truyền trước.Các lưu lượng khơng ấn định mức ưu tiên đưa vào hàng đợi bình thường -PQ cung cấp thời gian đáp ứng nhanh so với kỹ thuật hàng đợi khác Mặc dù ấn định độ ưu tiên cho hàng đợi giao diện đầu thường sử dụng cho lưu lượng có bảng thơng tin thấp.Để giải vấn đề hàng đợi có độ ưu tiên thấp khơng xử lý có q nhiều hàng đợi có độ ưu tiên cao ta sử dụng kiểu hàng đợi khác;hàng đợi cân có trọng số (WFQ) hay hàng đợi cân (FQ),đơn giản ta sử dụng chế định dạng lưu lượng hay CAR để giới hạn tốc độ lưu lượng có độ ưu tiên cao PQ sử dụng định cấu hình tĩnh khơng thể thích ứng với mạng thay đổi.Cơ chế xếp hàng ưu tiên chế đơn giản cung cấp lớp dịch vụ phân biệt cần hàng đợi FIFO Lấy ví dụ sau:cho hàng đợi FIFO ta ấn định mức ưu tiên khác cho chúng:mức ưu tiên cao, trung bình, bình thường,thấp 2.4 Ví dụ: Cài đặt Queue Linklist Cài đặt Queue using System; using System.Collections.Generic; namespace P02_CustomQueue { class Program { static void Main(string[] args) { Console.Title = "Custom Queue with LinkedList"; var queue = new MyQueue(); queue.Enqueue("Hello"); queue.Enqueue("world"); queue.Enqueue("from"); queue.Enqueue("my"); queue.Enqueue("super"); queue.Enqueue("queue"); queue.Enqueue("class"); while (queue.Count > 0) { Console.Write($"Before: {queue.Count} items, "); Console.Write($"Dequeued item: {queue.Dequeue()}, "); Console.WriteLine($"After: {queue.Count} items"); } Console.ReadKey(); } } class MyQueue { private readonly LinkedList _items; public MyQueue() => _items = new LinkedList(); public void Enqueue(T item) => _items.AddLast(item); public T Dequeue() { var temp = _items.First.Value; _items.RemoveFirst(); return temp; } public T Peek() => _items.First.Value; public void Clear() => _items.Clear(); public int Count => _items.Count; } } Chương 3.Mơ tả thuật tốn: 3.1 Biểu diễn cấu trúc liệu hàng đợi: Giờ có lẽ bạn tưởng tượng hàng đợi Chúng ta truy cập hai đầu hàng đợi Dưới biểu diễn hàng đợi dạng cấu trúc liệu: Tương tự cấu trúc liệu ngăn xếp, cấu trúc liệu hàng đợi triển khai sử dụng Mảng (Array), Danh sách liên kết (Linked List), Con trỏ (Pointer) Cấu trúc (Struct) Phần tìm hiểu tiếp hàng đợi triển khai danh sách liên kết đơn 10 3.2 Các thao tác với thuật toán: Khai báo kiểu Item (nếu cần) Struc node{ Item struct struct node queue node infor; *rear; q; *next; }; struct struct queue{ node *front; }; (1) Khởi tạo hàng đợi rỗng: void create(struct queue *q){ q->front = NULL; q->rear= NULL; } (2) Kiểm tra hàng đợi rỗng: int Empty(struct queue q){ return (q.front == NULL) ; } (3) Thêm phần tử x vào lối sau hàng đợi: Nếu hàng đợi chưa đầy, thêm phần tử cần thêm vào cuối(rear) hàng đợi Ngược lại, thông báo lỗi Các bạn lưu ý, rear số phần tử thêm lần Do đó, thêm xong ta tăng rear lên đơn vị Giá trị rear cần thay đổi nên truyền theo tham chiếu void Push(struct queue *q, item x){ struct node *p; p= new node; p->infor= x; 11 p->next= NULL; if (Empty(*q)){ q->front= p; q->rear=p; } else{ q->rear->next = p; q->rear= p; delete p; } } (4) Loại bỏ phần tử lối trước hàng đợi: Nếu hàng đợi có phần tử, tiến hành xóa bỏ phần tử đầu hàng đợi cách tăng front lên giá trị Ở đây, front số phần tử bị xóa Cho nên cần tăng xong, lý ta cần truyền tham số front sử dụng tham chiếu int Pop(struct queue *q, item &x){ struct node *p; if (Empty(*q)) return 0; else{ p= new node; p= q->front; x= q->front->infor; q->front= q->front->next; delete p; return 1; } } 12 3.3 Hoạt động enqueue cấu trúc liệu hàng đợi: Bởi cấu trúc liệu hàng đợi trì hai trỏ liệu: front rear, hoạt động loại cấu trúc liệu phức tạp so sánh với cấu trúc liệu ngăn xếp Dưới bước để enqueue (chèn) liệu vào hàng đợi: Bước 1: kiểm tra xem hàng đợi có đầy khơng Bước 2: hàng đợi đầy, tiến trình bị lỗi bị Bước 3: hàng đợi không đầy, tăng trỏ rear để trỏ tới vị trí nhớ trống Bước 4: thêm phần tử liệu vào vị trí trỏ rear trỏ tới hàng đợi Bước 5: trả success Đôi cần kiểm tra xem hàng đợi khởi tạo hay chưa để xử lý tình khơng mong đợi 3.4 Hoạt động dequeue cấu trúc liệu hàng đợi Việc truy cập liệu từ hàng đợi tiến trình gồm hai tác vụ: truy cập liệu nơi trỏ front trỏ tới xóa liệu sau truy cập Dưới bước để thực hoạt động dequeue: 13 Bước 1: kiểm tra xem hàng đợi trống hay không Bước 2: hàng đợi trống, tiến trình bị lỗi bị Bước 3: hàng đợi khơng trống, truy cập liệu nơi trỏ front trỏ Bước 4: tăng trỏ front để trỏ tới vị trí chứa phần tử Bước 5: trả success Chương 4.Ứng dụng : 4.1 Khi lập lịch CPU: -Khi có nhiều tiến trình u cầu CPU số thuật toán lập lịch phức tạp sử dụng với hàng đợi để phân phối thời gian xử lý CPU cho tiến trình.Khi liệu truyền bất đồng tiến trình,hàng đợi dùng để đồng hóa liệu 4.2 Khi in ấn: -Khi in ấn,các tài liệu cần in tải vào nhớ đệm.Sau đẩy đệm riêng máy in.Cơ chế gọi spooling.Spooling cho phép đặt 14 nhiều lệnh in vào hàng đợi,giúp người dùng chờ kết thúc lệnh để bắt đầu lệnh in 4.3 Ứng dụng Queue Amazon Web Services: 4.3.1 Amazon Web Services gì? -Amazon Web Services hay AWS tảng dịch vụ công nghệ thơng tin điệntốn đám mây tồn diện với dịch vụ cho thuê máy chủ, lưu trữ sở liệu, hạ tầng mạng, phân phối nội dung nhiều giải pháp phần mềm khác giúp nhà phát triển phần mềm doanh nghiệp triển khai mở rộng hệ thống thơng tin dễ dàng nhanh chóng -Các dịch vụ AWS đưa đưa vào năm 2006 với mục đích ban đầu để quản lý điều hành hoạt động bán hàng online website Amazon.com Sau đó, AWS cơng ty tiên phong dịch vụ điện toán đám với khái niệm pay-as-you-go tảng AWS này, tức doanh nghiệp trả chi phí thực với nhu cầu bạn sử dụng, giúp doanh nghiệp dễ dàng đầu tư mở rộng hạ tầng cơng nghệ thơng tin với máy tính, dịch vụ lưu trữ liệu với chi phí phù hợp hiệu 4.3.2 Amazon Simple Queue Service: Amazon Simple Queue Service (SQS) dịch vụ giúp lưu trữ thông điệp (message), thường liệu văn bản, dạng hàng đợi (queue) Ưu điểm Amazon SQS tính nhanh chóng, đáng tin cậy, có khả mở rộng quản lý cách đầy đủ -Cấu trúc Amazon SQS Cấu trúc Amazon SQS gồm phần:  Các thành phần hệ thống phân tán  Hàng đợi 15  Các thông điệp hàng đợi 16 Cơ chế hoạt động Amazon SQS Cơ chế hoạt động Amazon SQS mơ tả hình đây: Giải thích chi tiết sau:  Thành phần gửi thông điệp A tới hàng đợi Hàng đợi lưu trữ thông điệp 17  Khi thành phần hệ thống (ở thành phần 2) sẵn sàng xử lý thông điệp gọi tới hàng đợi, lúc này, thông điệp trả lại (ở giải sử thông điệp A)  Sau thành phần xử lý xong thơng điệp A, xóa A khỏi hàng đợi để tránh thành phần sau gọi tới thơng điệp  Ở đây, thấy rõ vai trò hàng đợi quan trọng Nó giúp xếp tổ chức thơng điệp bản, có trật tự, làm cho thơng điệp xử lý theo thứ tự, thông điệp gửi trước xử lý trước ngược lại Từ khơng có thơng điệp phải chờ q lâu Chương 5.Demo mơ thuật tốn queue 18 Lời cảm ơn Em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Đại Học Công nghệ Giao Thông Vận Tải tạo điều kiện thuận lợi cho em thực tốt đề tài Em xin chân thành bày tỏ lòng biết ơn sâu sắc đến thầy Lương Hoàng Anh Thầy tận tâm hướng dẫn, định hướng có nhận xét đắn, kịp thời cho em suốt thời gian thực đề tài Bên cạnh đó, khơng thể khơng nhắc tới u thương chăm sóc gia đình, động viên bạn bè giúp em vượt qua khó khăn thực đề tài Mặc dù em cố gắng trình thực đề tài chắc khơng tránh khỏi thiếu sót Kính mong q thầy bạn tận tình góp ý, bảo Một lần nữa, em xin cảm ơn mong nhận tình cảm chân thành từ tất người 19 20 Tài liệu tham khảo [1 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDevelo ] perGuide/welcome.html [2 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDevelo ] perGuide/sqs-basic-architecture.html [3 https://tuhocict.com/hang-doi-queue-trong-c-cai-dat-ung-dung-lop-queue/ ] 21 ... LinkedList"; var queue = new MyQueue(); queue. Enqueue("Hello"); queue. Enqueue("world"); queue. Enqueue("from"); queue. Enqueue("my"); queue. Enqueue("super"); queue. Enqueue( "queue" ); queue. Enqueue("class");... chiếu đến nút chuỗi -Danh sách liên kết cấu trúc liệu sử dụng phổ biến thứ hai sau mảng Dưới khái niệm liên quan tới Danh sách liên kết:  Link (liên kết) : link Danh sách liên kết lưu giữ liệu gọi... Mỗi liên kết Danh sách liên kết chứa link tới next link gọi Next  First: Danh sách liên kết bao gồm link kết nối tới first link gọi First 2.2 Định nghĩa hàng đợi Queue: -Hàng đợi(tiếng anh: Queue)

Ngày đăng: 13/10/2020, 17:35

TỪ KHÓA LIÊN QUAN

w