ساختمان داده ها و الگوريتمها

Slides:



Advertisements
Similar presentations
Queue theory.
Advertisements

مهدی آذرنوش مبحث ششم : آرایه ها و رشته ها حسابگری الگوریتمی.
Queues Linear list. One end is called front. Other end is called rear. Additions are done at the rear only. Removals are made from the front only.
Queues Linear list. One end is called front. Other end is called rear. Additions are done at the rear only. Removals are made from the front only.
Queue Chapter 9 Stacks Last in first out (LIFO)Linear list. One end is called top. Other end is called bottom. Additions to and removals from the top.
دوران شكل، رسم اشكال 3D مركز تحصيلات تكميلي در علوم پايه زنجان بخش فن‌آوري اطلاعات گرافيك كامپيوتري قسمت پنجم سري آموزش هاي OpenGL.
سازگاري فرايندهاي يادگيري Consistency of Learning Processes ارائه دهنده : الهام باوفای حقیقی استاد درس : آقای دکتر شيري دانشگاه امير كبير دانشكده ‌ مهندسي.
دستور العمل نحوه محاسبه امتیاز مقالات ISI اعضای هیأت علمی دانشگاه صنعتی اصفهان بر اساس تعداد استنادات در پايگاه اسكاپوس شهریور ماه 1388 نفیسه دهقان.
1 آزمايشگاه سيستم های هوشمند ( Domain-specific Architecture.
مهندسی نرم افزار مبتنی بر عامل
ارائه روشي براي شناسايي کاراکترهاي دستنويس، برپايه شبکه LVQ.
ارائه درس روباتيکز Extended Kalman Filter فريد ملازم استاد مربوطه دکتر شيري دانشگاه امير کبير – دانشکده کامپيوتر و فناوري اطلاعات.
1 فصل 8 - طراحي زيرسيستم ها برگرفته از کتاب Large-Scale Software Architecture – Jeff Garland, Richard Anthony فرنوش گلشن آزمايشگاه سيستم هاي هوشمند بهار.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
فارسی سازی يکپارچه در سيستم عاملهای OS/390 & Windows واحد 1 مهندسی سيستم Integrated Farsi support on OS/390 & Windows.
مرتضي صاحب الزماني 1 Data Structures. مرتضي صاحب الزماني 2 Corner Stitching.
مرتضي صاحب الزماني 1 Basic Graph Algorithms. مرتضي صاحب الزماني 2 Graph Data Structures Adjacency Matrix [©Bazargan]
Applications of Stacks and Queues Stacks Linear list. One end is called top. Other end is called bottom. Additions to and removals from the top end only.
 Hassan jamali In the name of God Grade: three CD شامل : مكالمه لغات جديد درس نقاط گرامري و تمرين است.
Queues Linear list. One end is called front. Other end is called rear. Additions are done at the rear only. Removals are made from the front only. FIFO.
روابط مجموعه ها سلیمی. دکتر سلیمانی. نظریه فازی در سال 1965 بوسیله یک دانشمند ایرانی بنام پروفسور لطفی زاده معرفی گردید. گرچه این نظریه در ابتدا با.
اسامي شناسه ها (Identifier names) اسامي متغيرها ، توابع ، برچسب ها (labels) وبقيه اشياء تعريف شده توسط كاربر در C ، شناسه ( identifier ) ناميده مي شود.
1 فصل دوم تبديلات. 2 فصل دوم سرفصل مطالب مقدمه ضرب بردارها دستگاه ‌ هاي مختصات دوران ‌ ها مختصات همگن دوران ‌ ها و انتقال ‌ ها تبديلات تركيبي همگن تبديل.
شرط و تصميم اصول كامپيوتر 1. 2 الگوريتم اقليدس E1: [find remainder] Divide m by n and let r be the remainder. Clearly, 0
1/19 Informed search algorithms Chapter 4 Modified by Vali Derhami.
Solving problems by searching Chapter 3, part 2 Modified by Vali Derhami.
گراف وحيدي پور. تعاريف مجموعه اي غير تهي از راس مجموعه اي از زوج راسها كه بوسيله يال بهمديگر متصل هستند. a b d e.
پشته Stack ساختمان داده ها و الگوريتمها. 2 آشنايي مجموعه پويا (Dynamic Set ): مجموعه اي است كه تركيب و تعداد عناصر آن ممكن است در طول زمان اجراي برنامه.
1 فصل سوم سينماتيك مستقيم. 2 محتواي فصل   تعريف مجموعه فازي   تابع عضويت   نمايش مجموعه هاي فازي   برش آلفا   متغيرهاي زباني   ساخت مجموعه.
Cost- Effectiveness Analysis
Information Retrieval
اتوماسیون در نقشه برداری
اصول روان سنجی و روان آزمویی
ساختمان داده ها و الگوريتم ها
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
مرتب سازي مقايسه اي مرتب سازي خطي
آرايه ها و ساختارها.
آرايه ها.
ANOVA: Analysis Of Variance
ليست هاي پيوندي.
فصل سوم : صف وپشته اهداف آشنايي با پشته آشنايي با صف ارزشيابي عبارات 1.
ANOVA: Analysis Of Variance
Quick Sort مرتب سازي سريع.
لغت نامه و جدول درهم سازي Dictionaries and Hash Tables
آشنايي با برنامه نويسي به زبان C++
معرفي درس ساختمان داده ها و الگوريتمها
تبدیل فوریه (Fourier Transform)
نمايش اعداد در کامپيوتر چهار عمل اصلي
Similarity transformation
(Structured Query Language)
ادامه فصل سوم ....
درخت جستجوی دودویی درخت جستجوي دودويي: درخت دودويي صفر نود يا بيشتر
ادامه فصل سوم ....
سميرا قانوني زهرا معدني
گزگز و خواب رفتگي انگشتان دست
سيستمهاي اطلاعات مديريت
Queues Linear list. One end is called front. Other end is called rear.
هیدرولیک جریان در کانالهای باز
با تشکر از دکتر جواد سلیمی
تحليل عملكرد يك سيستم تصويربرداري ديجيتال
پشته و صف پیوندی Give qualifications of instructors: DAP
ساختمان داده‌ها درختان و درختان دودویی
مدلسازي تجربي – تخمين پارامتر
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد
پشته ها و صف ها.
تمريناتي براي پيشگيري از درد پايين کمر
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
Queues Linear list. One end is called front. Other end is called rear.
Presentation transcript:

ساختمان داده ها و الگوريتمها صف Queue ساختمان داده ها و الگوريتمها

صف نيز مانند پشته براي نگهداري مجموعه هاي پويا استفاده مي شود صف Queue صف نيز مانند پشته براي نگهداري مجموعه هاي پويا استفاده مي شود هر صف يك ابتدا و يك انتها دارد عناصر جديد به انتهاي صف اضافه مي شوند عناصر قديمي از ابتداي صف حذف مي شوند صف براي پياده سازي نوبت بندي استفاده مي شود و سا ختار آن First In First Out (FIFO) است. M A S in out

هر صف ابتدا و انتهايي دارد صف Queue هر صف ابتدا و انتهايي دارد ابتداي صف(head): محلي است كه عضو موجود در آن كانديداي حذف است. انتهاي صف(tail): محلي است كه عضو جديدي كه وارد صف مي شود در آن قرار مي گيرد هر صف ظرفيت محدودي دارد هر صف مي توان در يكي از وضعيتهاي پر، نيمه پر يا خالي باشد اگر ابتدا و انتهاي صف يكي باشند، صف خالي است اگر ابتداي صف بلافاصله بعد از انتهاي آن باشد، صف پر است. مشابه پشته مي توان صف را براحتي با استفاده از آرايه پياده سازي كرد

مثال صف

public interface Queue { public boolean isEmpty(); The Interface Queue public interface Queue { public boolean isEmpty(); public Object getFrontEelement(); public Object getRearEelement(); public void put(Object theObject); public Object remove(); }

بازنگري كاربردهاي پشته جاهايي كه نمي توان از صف به جاي پشته استفاده كرد: Parentheses matching. Towers of Hanoi. Method invocation and return. Try-catch-throw implementation. جاهايي كه مي توان از صف به جاي پشته استفاده كرد: Rat in a maze. Results in finding shortest path to exit.

Label all reachable squares 1 unit from start. Lee’s Wire Router start pin end pin Could use rat in a maze animation from Web site instead. Blue squares are blocked squares. Orange squares are available to route a wire. A queue of reachable squares is used. The queue is initially empty, and the start pin square/cell is the examine cell. This cell has a distance value of 0. Unreached unblocked squares adjacent to the examine cell are marked with their distance (this is 1 more than the distance value of the examine cell) and added to the queue. Then a cell is removed from the queue and made the new examine cell. This process is repeated until the end pin is reached or the queue becomes empty. Cells become examine cells in order of their distance from the start pin. Label all reachable squares 1 unit from start.

Label all reachable unlabeled squares 2 units from start. Lee’s Wire Router start pin end pin 1 1 Label all reachable unlabeled squares 2 units from start.

Label all reachable unlabeled squares 3 units from start. Lee’s Wire Router start pin 2 2 end pin 1 1 2 2 2 Label all reachable unlabeled squares 3 units from start.

Label all reachable unlabeled squares 4 units from start. Lee’s Wire Router start pin 3 3 2 2 end pin 1 1 2 2 2 3 3 Label all reachable unlabeled squares 4 units from start.

Label all reachable unlabeled squares 5 units from start. Lee’s Wire Router start pin 4 3 3 2 2 end pin 1 1 2 2 2 3 4 3 4 4 4 Label all reachable unlabeled squares 5 units from start.

Label all reachable unlabeled squares 6 units from start. Lee’s Wire Router 5 start pin 4 5 3 3 2 2 end pin 1 1 2 2 2 3 4 3 4 5 4 4 5 5 5 Label all reachable unlabeled squares 6 units from start.

End pin reached. Traceback. Lee’s Wire Router 6 5 6 start pin 4 5 3 3 2 2 end pin 1 1 2 2 2 6 3 4 3 4 5 6 4 4 5 6 5 6 5 6 6 End pin reached. Traceback.

End pin reached. Traceback. Lee’s Wire Router 6 5 6 start pin 4 5 3 3 2 2 end pin 1 1 1 2 2 2 2 6 3 4 3 3 4 4 5 5 6 4 4 5 6 5 6 5 6 6 End pin reached. Traceback.

Derive From ArrayLinearList 1 2 3 4 5 6 a b c d e اگر front‌ انتهاي سمت چپ و rear انتهاي سمت راست ليست باشد: Queue.isEmpty() => super.isEmpty() O(1) time getFrontElement() => get(0) getRearElement() => get(size() - 1) put(theObject) => add(size(), theObject) remove() => remove(0) O(size) time

Derive From ArrayLinearList 1 2 3 4 5 6 e d c b a اگر front‌ انتهاي سمت راست و rear انتهاي سمت چپ ليست باشد: Queue.isEmpty() => super.isEmpty() O(1) time getFrontElement() => get(size() - 1) getRearElement() => get(0) put(theObject) => add(0, theObject) O(size) time remove() => remove(size() - 1)

Derive From ArrayLinearList در ادامه همين درس نمونه اي از اين نمايش ويژه را خواهيم ديد

Derive From ExtendedChain b c d e null firstNode lastNode front rear اگر front‌ انتهاي سمت چپ و rear انتهاي سمت راست ليست باشد: Queue.isEmpty() => super.isEmpty() O(1) time getFrontElement() => get(0)

Derive From ExtendedChain b c d e null firstNode lastNode front rear getRearElement() => getLast() … new method O(1) time put(theObject) => append(theObject) remove() => remove(0)

Derive From ExtendedChain b a null firstNode lastNode rear front اگر front‌ انتهاي سمت راست و rear انتهاي سمت چپ ليست باشد: Queue.isEmpty() => super.isEmpty() O(1) time getFrontElement() => getLast()

Derive From ExtendedChain b c d e null firstNode lastNode rear front getRearElement() => get(0) O(1) time put(theObject) => add(0, theObject) remove() => remove(size-1) O(size) time

ليست پيوندي ويژه صف كلاس ليست پيوندي ويژه اي براي نمايش صف تعريف كنيد تا كارايي بالاتري را نسبت به استفاده از كلاسهاي موجود داشته باشيد

نمايش چرخشي آرايه استفاده از آرايه يك بعدي براي نمايش صف queue[] [0] [1] [2] [3] [4] [5]

چيدن سه عضو در يك آرايه چرخشي: نمايش چرخشي آرايه چيدن سه عضو در يك آرايه چرخشي: [0] [1] [2] [3] [4] [5] A B C

نمايش چرخشي آرايه ترتيب ديگر چيدن سه عضو [0] [1] [2] [3] [4] [5] A B C

استفاده از متغيرهاي صحيح front, rear براي نمايش ابتدا و انتهاي صف نمايش چرخشي آراي استفاده از متغيرهاي صحيح front, rear براي نمايش ابتدا و انتهاي صف front به محلي از آرايه اشاره مي كند که يكی قبل از اولين عضو آرايه – در جهت ساعتگرد – قرار دارد rear به آخرين عضو آرايه اشاره مي كند [0] [1] [2] [3] [4] [5] A B C [0] [1] [2] [3] [4] [5] A B C rear rear front front

rear‌ را در جهت ساعتگرد يك واحد جلو مي بريم : افزودن يك عضو rear‌ را در جهت ساعتگرد يك واحد جلو مي بريم : [0] [1] [2] [3] [4] [5] A B C front rear

عضو جديد را در محل queue[rear]. قرار مي دهيم افزودن يك عضو rear‌در جهت ساعتگرد يك واحد جلو مي بريم : عضو جديد را در محل queue[rear]. قرار مي دهيم [0] [1] [2] [3] [4] [5] A B C front rear D

front‌ را يك واحد جلو مي بريم حذف يك عضو front‌ را يك واحد جلو مي بريم [0] [1] [2] [3] [4] [5] A B C front rear

عضو queue[front]. را مي خوانيم حذف يك عضو front‌ را يك واحد جلو مي بريم عضو queue[front]. را مي خوانيم [0] [1] [2] [3] [4] [5] A B C front rear

حركت rear‌در جهت ساعتگرد if (rear = = queue.length) rear = 0; [0] [1] [2] [3] [4] [5] A B C front rear rear = (rear + 1) % queue.length;

صف خالي [0] [1] [2] [3] [4] [5] A B C front rear

صف خالي [0] [1] [2] [3] [4] [5] B C rear front

صف خالي [0] [1] [2] [3] [4] [5] C rear front

صف خالي [0] [1] [2] [3] [4] [5] rear front بعد از حذف چندين عضو، صف خالي مي شود و front = rear. هنگام ساخت اوليه، صف خالي است بنابراين در ابتداي ساختن صف بهتر است :front = rear = 0.

صف پر [0] [1] [2] [3] [4] [5] A B C front rear

صف پر [0] [1] [2] [3] [4] [5] rear D front C B A

صف پر [0] [1] [2] [3] [4] [5] rear D E front C B A

بعد از افزودن چند عضو، صف پر مي شود و در نتيجه :front = rear. [0] [1] [2] [3] [4] [5] D E front C F B A rear بعد از افزودن چند عضو، صف پر مي شود و در نتيجه :front = rear. چگونه صف پر را از خالي تشخيص دهيم ؟

صف دوطرفه Deque / Double Ended Queue صفهای ویژه صف اولویت دار کاربرد: Event Handling پیاده سازی: درخت Heap صف دوطرفه Deque / Double Ended Queue کاربرد: شبیه سازی سیستمهای موازی و همروند پیاده سازی: لیست پیوندی دوطرفه

Keyboard Buffer Windows Event Queue صف هاي مهم Keyboard Buffer هر حرفي را كه با استفاده از صفحه كليد تايپ مي كنيد در حافظه اي قرار مي گيرد كه به Keyboard Buffer معروف است. سيستم عامل به طور مرتب اين حافظه را تحت نظر دارد و حرف موجود در ابتداي اين صف را برداشته و به مصرف مي رساند اگر تايپ شما آنقدر سريع باشد كه اين حافظه پر شود، كامپيوتر با بوق كوتاهي شما را مطلع مي سازد اين حالت، در سيستم عامل Dos، كه بافر آن گنجايش حداكثر 16 حرف را دارد، خيلي اتفاق مي افتد(مي افتاد!؟) Windows Event Queue در سيستم عامل ويندوز، هر واقعه(فشار دادن كليد، كليك ماووس، فرارسيدن زماني خاص و...) در يك صف واقعه مختص هر برنامه قرار مي گيرد.

پروژه2 – حل مساله موش و پنير با استفاده از صف اين مساله در درس پشته ها و همچنين صفها بررسي شد اين مساله را با استفاه از صف حل كنيد توضيحات بيشتر در سايت درس