Asst.Prof. Dr.Surasak Mungsing

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Strength of Materials I EGCE201 กำลังวัสดุ 1
Advertisements

John Rawls  John Rawls is the most famous American social contract theorist argued that “Justice is fairness” He Thought human natural have a appropriate.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
หลักการและแนวคิดการนำ สื่ออิเล็กทรอนิกส์ มาใช้ใน การเรียนการสอน ผศ. นพ. ทรงพล ศรีสุโข 30 ก. ย
คำสั่ง DISPLAY รูปแบบที่ 1 DISPLAY identifier-1, identifier-2 … literal-1 literal-2 [ UPON mnemonic-name ]  ตัวอย่าง DISPLAY STUDENT-NAME. DISPLAY.
Set is a basic term in Mathematics. There is no precise definition for term “set”, But roughly speaking, a set is a collection of objects, Things or symbols,
Arithmetic Verb Template. ADD MOVE ZERO TO NO. ADD 1 TO NO. 0 1.
INC 551 Artificial Intelligence Lecture 2. Review Environment Action Sense, Perceive Make Decision Agent World Model Deliberative Agent.
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
Educational Objectives
Chapter 9 : Designing Approach
Graphical User Interface charturong.ee.engr.tu.ac.th/CN208
BC 423 Systems Analysis and Design อ. พนิดา ตันศิริ ต่อ 1648 Grading Criteria 1.Mid-term Exam40 % 2. Final.
BC423 Systems Analysis and Design อ. พนิดา ตันศิริ ต่อ 1640
การอบรมเชิงปฏิบัติการเรื่อง “การสร้างข้อสอบ OSCE”
อาจารย์ มธ. อธิบายการใช้ โมเดลของ
Data Structures and Algorithms
โครงสร้างข้อมูลแบบรายการโยง (Linked Lists) Data Structures and Algorithms อ. ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี
ระบบการจัดเก็บในคลังสินค้า
Stack.
: Chapter 1: Introduction 1 Montri Karnjanadecha ac.th/~montri Image Processing.
Color Standards A pixel color is represented as a point in 3-D space. Axis may be labeled as independent colors such as R, G, B or may use other independent.
ออโตมาตาจำกัด FINITE AUTOMATA
Labour Economics. Introduction What do we learn in Labour Economics? ?
Helping you make better treatment decisions for your patients.
Chapter 19 Network Layer: Logical Addressing
Inductive, Deductive Reasoning ผศ.( พิเศษ ) น. พ. นภดล สุชาติ พ. บ. M.P.H.
Course Software Engineering SE Overview and Introduction.
December 25 th, 2013 Naresuan University Hospital, Faculty of Medicine, Naresuan University December 25 th, 2013 Naresuan University Hospital, Faculty.
Computer Graphics.
Chap 4 Complex Algebra. For application to Laplace Transform Complex Number.
การออกแบบและพัฒนาซอฟต์แวร์ บทที่ 7 การทดสอบโปรแกรม
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
8/3/2014The Realities of software Testing1 Software testing Realities What is the realities of software testing Why does the software testing not complete.
Merchant Marine Training Centre วิชาการเป็นเลิศ เชิดชู คุณธรรม ผู้นำ.
บทที่ 2 งบการเงินพื้นฐาน BASIC FINANCIAL STATEMENTS 2.
Dynamic Link Library (DLL)
Page: 1 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้ ผศ. บุรินทร์ รุจจน พันธุ์.. ปรับปรุง 19 ตุลาคม 2555 Introduction to Batch.
Menu and Interactive with Powerpoint ให้นำเรื่อง Input /Output Technology มา จัดทำ การนำเสนอ โดยใช้หลักการ Menu and Interactive with powerpoint มาประยุกต์
Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program.
ตัวแปรในภาษา GML ง การสร้างเกม คอมพิวเตอร์.
วิธีการ Auto ship.
Introduction to Earned Value Analysis.
Lecture on Grading. Instructor: Ajarn Neill Grant Office: Room Course Website: (NO
Writing a research. Why Research?  To find whether the messages and the materials are appropriate to the target group  To modify the messages and the.
STACK ADT By Pantharee S.. Stack Model  A list with the restriction that insertions deletions can be performed in only one position (LIFO)  Push – insert.
List ADTs By Pantharee S..
1-1: Software Project Management การจัดการโครงงานซอฟต์แวร์ Software Project Management การจัดการโครงงานซอฟต์แวร์ ความหมายการจัดการโครงงาน.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Chapter 3 Simple Supervised learning
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
21 August ดรุณี ศมาวรรตกุล 1 2. ADT List - Unsorted list ADT - list implementation - Sorted List - Circular list - Doubly linked list.
An Online Computer Assisted Instruction Development of Electronics Devices Subject for Learning Effectiveness Testing By Assoc.Prof. Suwanna Sombunsukho.
Bitcoin Mining. Hello, I’m Pawaris and I love Bitcoin.
ว เคมีพื้นฐาน พันธะเคมี
Week 13 Basic Algorithm 2 (Searching)
รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
พื้นฐานการเขียนแบบทางวิศวกรรม
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
The management of change Changes in work patterns and jobs
<insert problem title>
STRATEGIES FOR SUCCESS
การวิเคราะห์และออกแบบขั้นตอนวิธี
Year 9 Term 1 Foundation (Unit 1) INTEGERS, ROUNDING AND PLACE VALUE
ใบสำเนางานนำเสนอ:

Asst.Prof. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSC201 การวิเคราะห์และออกแบบขั้นตอนวิธี Analysis and Design of Algorithms Asst.Prof. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Apr-17

Analysis and Design of Algorithms CSC201 Analysis and Design of Algorithms Lecturer: Aaat.Prof. Dr.Surasak Mungsing surasak.mu@spu.ac.th http://www.spu.ac.th/teacher/surasak.mu Contact: 12th Floor, Building 11 Office Hour: TBA 4-Apr-17

Course Description การวิเคราะห์ทางทฤษฎีของขั้นตอนวิธี การเลือกโครงสร้างข้อมูลที่เหมาะสม ขั้นตอนวิธีเรียกซ้ำ การวิเคราะห์ชั้นความซับซ้อน การเรียงลำดับและการค้นหา การวิเคราะห์ความต้องการของเนื้อที่และเวลาที่ต้องการของขั้นตอนวิธี การคำนวณได้และการตัดสินใจได้ของปัญหาที่ยากต่อการแก้ไข เช่นที่พบในปัญญาประดิษฐ์ แนะนำขั้นตอนวิธีแบบขนาน 4-Apr-17

Objective Understanding of theory and applications of algorithms for computer-based problem solving Concept development for computer-based problem solving Skill improvement for design of computer-based problem solving วัตถุประสงค์ เพื่อให้นักศึกษาเข้าใจทฤษฎีและการประยุกต์ใช้ขั้นตอนวิธีทางคอมพิวเตอร์ เพื่อพัฒนาความคิดด้านการวิเคราะห์กับปัญหาทางคอมพิวเตอร์ เพื่อเสริมสร้างพื้นฐานด้านทักษะการออกแบบวิธีการแก้ปัญหาทางคอมพิวเตอร์ 4-Apr-17

ตำราและเอกสารประกอบการสอน Books Mark Allen Weiss. Data Structures and Algorithm Analysis in Java, International Edition. Addison-Wesley. 2010. (www.cs.fiu.edu/~weiss ) R.T.C. Lee, S.S. Tseng, R.C. Chang, Y.T. Tsai. Introduction to the Design and Analysis of Algorithms, A Strategic Approach. McGraw-Hill Education (Asia). 2005 4-Apr-17

Evaluation Final Exam 40 % Mid-Term Exam 20 % Quiz 20 % H/W & Exercise 10% Participation 10 % Total 100 % 4-Apr-17

Grading Score Grade 80-100 A 75-79 B+ 70-74 B 65-69 C+ 60-64 C 55-59 50-54 D 0-49 F 4-Apr-17

Outline Course Introduction and review of Data Structures Complexity theory and necessary mathematical background Algorithms and algorithm analysis Week 1-7 Time complexity of algorithms in form of Big-Oh Time complexity analysis of sorting algorithms (Part I) Time complexity analysis of sorting algorithms (Part II) 1. แนะนำจุดมุ่งหมายวิชาและทบทวนความรู้ด้าน โครงสร้างข้อมูล 2. ทฤษฎีความซับซ้อน และคณิตศาสตร์ที่จำเป็นสำหรับการวิเคราะห์ 3. ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี 4. การวิเคราะห์หาความซับซ้อนด้านเวลาในรูป แบบของ Big-Oh 5. การวิเคราะห์ความซับซ้อนของขั้นตอนวิธีการเรียงลำดับข้อมูล 6. การวิเคราะห์ขั้นตอนวิธีที่ใช้ในโครงสร้างข้อมูลแบบ List และ Stack และ Queues 7. การวิเคราะห์ขั้นตอนวิธีที่ใช้ในโครงสร้างข้อมูลแบบ Trees Time complexity Analysis of Algorithms using List, tack, and Queue data structures Apr-17

Time complexity analysis for searching in graph Outline(Cont.) Analysis of Algorithms using Trees data structure Applications of Decision Tree Shortest Path and Minimum Spanning Tree Week 8 -11 Time complexity analysis for searching in graph Algorithm design using Greedy and Divide and Conquer techniques (e-Learning) 8. ประยุกต์ใช้ Tree กับปัญหาต้องตัดสินใจ 9. กราฟกับปัญหา Shortest Path และ Minimum Spanning Tree 10. การวิเคราะห์ค่าความซับซ้อนของการค้นหา 11. เทคนิคการออกแบบขั้นตอนวิธี Greedy และ Divide and Conquer 12. เทคนิคการออกแบบขั้นตอนวิธี Dynamic Programming, Backtracking 13. การคำนวณได้และการตัดสินใจของปัญหาที่ยากต่อการแก้ไข 14. ทบทวนเนื้อหาและประเด็นสำคัญของที่เรียนมาทั้งหมด Algorithm design using Dynamic Progra mming, and Backtracking techniques (e-Learning) P and NP Problem (e-Learning) Apr-17

Mutual Agreement Attendant checking for each lecture Postpone lectures will informed at least 1 week in advance Makeup class will be announced in next class Late class is not more than 20 minutes, otherwise there will be no class and requires a makeup class Class attendance must be at least 80% to be eligible for final examination All documents can be downloaded at http://www.spu.ac.th/teacher/surasak.mu/ มีการเช็คขื่อเข้าเรียนทุกครั้ง การแจ้งงดการเรียนการสอน จะแจ้งล่วงหน้าอย่างน้อย 1 สัปดาห์ แต่ถ้าเป็นกรณีกะทันหันและไม่สามารถติดต่อตัวแทนกลุ่มนักศึกษาได้ทัน ให้นักศึกษารออยู่ภายในห้องเรียนอย่างน้อย 20 นาทีแต่ไม่เกิน 40 นาทีและถ้ายังไม่มีการเรียนการสอนเกิดขึ้น ให้ถือว่าครั้งนั้นงดการเรียนการสอนโดยปริยาย และจะแจ้งวันเรียนชดเชยในครั้งถัดไป นักศึกษาต้องมีเวลาเข้าเรียนอย่างน้อย 80 % ของเวลาเรียนทั้งหมด จึงจะมีสิทธิ์เข้าสอบไล่ นักศึกษาสามารถ download สไลด์ประกอบการสอนได้จาก website ของอาจารย์ผู้สอน 4-Apr-17

CSE221/NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี 4-Apr-17

Review: Data Structures Apr-17

next (datatype ChainNode) The Class Chain a b c d e null firstNode size = number of elements Use ChainNode next (datatype ChainNode) element (datatype Object)

public Object get(int index) The Method get a b c d e null firstNode public Object get(int index) { checkIndex(index); // move to desired node ChainNode currentNode = firstNode; for (int i = 0; i < index; i++) currentNode = currentNode.next; return currentNode.element; }

remove(0) firstNode = firstNode.next; Removing An Element a b c d e null firstNode remove(0) firstNode = firstNode.next;

determine beforeNode and change pointer. remove(2) beforeNode a b c d e null firstNode determine beforeNode and change pointer. beforeNode.next = beforeNode.next.next;

firstNode = new ChainNode(‘f’, firstNode); One-Step add(0,’f’) a b c d e null firstNode f newNode firstNode = new ChainNode(‘f’, firstNode);

Two-Step add(3,’f’) a b c d e firstNode f newNode beforeNode null firstNode f newNode beforeNode beforeNode = firstNode.next.next; beforeNode.next = new ChainNode(‘f’, beforeNode.next);

Circular List firstNode a b c d e Useful, for example, when each node represents a supplier and you want each supplier to be called on in round-robin order. Other applications seen later. A variant of this has a header node—circular list with header node. When you don’t have a header node, it is often useful to have a last node pointer rather than a first node pointer. By doing this, additions to the front and end become O(1).

Doubly Linked List a b c d e firstNode lastNode null Can be used to reduce worst-case run time of a linear list add/remove/get by half. Start at left end if index <= size/2; otherwise, start at right end.

Doubly Linked Circular List With Header Node

Doubly Linked Circular List firstNode

Stacks Linear list. One end is called top. Other end is called bottom. Additions to and removals from the top end only. 4-Apr-17

Stack Of Cups top bottom F E D C B A Picture is really a stack of cups and saucers LIFO = last in first out. The first cup that is removed from a stack of cups is the Last one that was added to the stack. Other examples of LIFO lists in real life: stack of trays in a cafeteria; paper stack in a printer or copy machine; newspaper stack at a news stand. Picture is really a stack of cups and saucers. LIFO = last in first out. The first cup that is removed from a stack of cups is the Last one that was added to the stack. Other examples of LIFO lists in real life: stack of trays in a cafeteria; paper stack in a printer or copy machine; newspaper stack at a news stand. 4-Apr-17

Checking Matching Parentheses (((a+b)*c+d-e)/(f+g)-(h+j)*(k-l))/(m-n) The result is pairs of position(u,v) where the open parenthesis at u is correctly matched with the close parenthesis at v (2,6) (1,13) (15,19) (21,25) (27,31) (0,32) (34,38) (a+b))*((c+d) (0,4) The close parenthesis at position 5 does not have an open parenthesis as its pairs (8,12) the open parenthesis at position 7 does not have a close parenthesis as its pairs Matching parenthesis is nearest unmatched parenthesis on left. ผลลัพธ์เป็นคู่ของตำแหน่ง (u,v) ซึ่งวงเล็บเปิดที่ตำแหน่ง u เข้าคู่อย่างถูกต้องกับวงเล็บปิดที่ตำแหน่ง v วงเล็บปิดที่ตำแหน่ง 5 ไม่มีวงเล็บเปิดที่เป็นคู่ของมัน วงเล็บเปิดที่ตำแหน่ง7 ไม่มีคู่วงเล็บปิด 4-Apr-17

Tower of Hanoi A B C 4 3 2 1 Could use animation of towers of hanoi from animations page on Web site. Also known as Towers of Brahma. According to legend, on the day of creation Buddhist monks began the task of moving disks from tower A to tower C. When they get done, the world will come to an end. 64 discs are to be moved from tower A to tower C on the condition that larger disc cannot be placed on top of the smaller one 4-Apr-17

Towers Of Hanoi/Brahma C 3 2 1 A towers of Hanoi with 3 discs 4-Apr-17

B C 2 1 3 A towers of Hanoi with 3 discs 4-Apr-17

B C 1 2 3 A towers of Hanoi with 3 discs 4-Apr-17

B C 3 1 2 A towers of Hanoi with 3 discs 4-Apr-17

B C 3 2 1 A towers of Hanoi with 3 discs 4-Apr-17

B C 3 2 1 A towers of Hanoi with 3 discs 4-Apr-17

Towers Of Hanoi/Brahma C 2 3 1 A towers of Hanoi with 3 discs 4-Apr-17

B C 3 2 1 A towers of Hanoi with 3 discs พำๆรพำห 7 moves 4-Apr-17

Recursive Solution A B C 1 Towerof Hanoi with n > 0 discs to be moved from tower A to tower C with the help of tower B Move n-1 discs from tower A to tower B with the help of tower C 4-Apr-17

B C 1 A ย้ายแผ่นทองคำด้านบนจาก A ไปยัง C 4-Apr-17

B C A 1 ย้ายแผ่นที่อยู่ด้ายบนจำนวน n-1 จาก B ไปยัง C โดยใช้ A ช่วย 4-Apr-17

B C 1 A moves(n) = 0 เมื่อ n = 0 moves(n) = 2*moves(n-1) + 1 = 2n-1 เมื่อ n > 0 4-Apr-17

Moves required moves(64) = 1.8 * 1019 (approximately) required At the rate of a billion moves/second it would take 570 years to complete the task of moving 64 disks. At the rate of 1 disk a minute (the disks are, after all, rather heavy), will take about 3.4 * 1013 years or 34,000,000,000,000 years At the rate of a billion moves/second it would take 570 years to complete the task of moving 64 disks. Of course, the Buddhist monks engaged in this activity are moving far fewer disks/second. At the rate of (say) 1 disk a minute (the disks are, after all, rather heavy), the monks will take about 3.4 * 1013 years. So there is quite a while to go before the world comes to an end. moves(64) = 1.8 * 1019 (โดยประมาณ) ประสิทธิภาพในการเคลื่อนย้าย 109 ครั้ง/วินาที คอมพิวเตอร์ต้องใช้เวลาประมาณ 570 ปี จึงจะทำสำเร็จ ทำการเคลื่อนย้ายที่อัตราความเร็ว 1 แผ่น/นาที พระจะต้องใช้เวลาทั้งหมดประมาณ 3.4 * 1013 ปี หรือ 34,000,000,000,000 ปี (สามสิบสี่ล้านล้านปี) 4-Apr-17

4-Apr-17

Queue at the bus station Bus Stop front rear rear

Queue at the bus station Bus Stop front rear

Queue at the bus station Bus Stop front rear rear

Queue at the bus station Bus Stop front rear rear This is FIFO queue. Some real life queues are not FIFO. Removal from a queue may be done by priority rather than by arrival time order. For example, loading into a plane– first class, frequent fliers, by rows from back of plane rather than by order in which you arrive at the departure gate.

Queue implemented with array Use 1-dimentional array to represent a queue queue[] Can be viewed as a circular queue [0] [1] [2] [3] [4] [5]

Add an element into queue Requires two pointers, front and rear [0] [1] [2] [3] [4] [5] A B C front rear

Add an element into queue move rear pointer clockwise 1 position then assign a value to the array pointed by the rear pointer [0] [1] [2] [3] [4] [5] A B C front rear D queue[rear]

Current queue status [0] [1] [2] [3] [4] [5] A B C front rear

Remove an element from queue Move front pointer clockwise 1 position then move the value out from queue [0] [1] [2] [3] [4] [5] A B C front rear queue[front]

Empty the queue [0] [1] [2] [3] [4] [5] A B C front rear

Empty the queue [0] [1] [2] [3] [4] [5] B C rear front

Empty the queue [0] [1] [2] [3] [4] [5] C rear front

Empty the queue [0] [1] [2] [3] [4] [5] rear front Continuously remove elements from queue causes the queue to be empty  front = rear. The queue is also empty when created  Starts with front = rear = 0.

Make the queue full [0] [1] [2] [3] [4] [5] A B C front rear By keep adding an element to the queue [0] [1] [2] [3] [4] [5] A B C front rear

Make the queue full [0] [1] [2] [3] [4] [5] rear D front C B A By keep adding an element to the queue [0] [1] [2] [3] [4] [5] rear D front C B A

Make the queue full [0] [1] [2] [3] [4] [5] rear D E front C B A By keep adding an element to the queue [0] [1] [2] [3] [4] [5] rear D E front C B A

Make the queue full [0] [1] [2] [3] [4] [5] D E front C F B A rear By keep adding an element to the queue [0] [1] [2] [3] [4] [5] D E front C F B A rear When continuously adding elements to queue, it is finally full so front = rear. How do you know whether the queue is empty or full when front = rear ?

How do we know whether the queue is empty or full when front = rear ? Assign a variable, size, to keep number of element in queue Increase queue size by 1 each time when when adding an element to queue (size++) Reduce queue size by 1 each time when remove an element from queue (size--) Queue is empty when queue size = 0 (size=0) solution กำหนดตัวแปรสำหรับเก็บค่าขนาดของคิว (size) ทุกครั้งที่เพิ่มสมาชิกในคิว ต้องเพิ่มขนาดของคิวด้วย (size++) ทุกครั้งที่ลบสมาชิกในคิว ต้องลดขนาดของคิวด้วย (size--) คิวว่างเมื่อ size เท่ากับ 0 (size == 0) คิวเต็มเมื่อ sizeเท่ากับขนาดของคิว (size == queue.length)

Tree in computer science leaves root nodes branches Tree is a set with at least 1 member t one of the tree member is called “root” other members(if any) are subtree(s) ต้นไม้ (Tree) คือเซ็ตที่มีสมาชิกอย่างน้อย1สมาชิก t หนึ่งในสมาชิกเรียกว่าราก หรือ root สมาชิกที่เหลือ (ถ้ามี) แบ่งกลุ่มเป็นต้นไม้ย่อยๆ 4-Apr-17

Binary Tree is a tree that may be an empty tree (a tree with no member) A non-empty binary tree has “root “ Remaining member (if any) สมาชิกที่เหลือ(ถ้ามี) จะแบ่งเป็นเป็น may be the root 0f at most 2 binary subtrees, called Left sub-tree and Right sub-tree เป็นต้นไม้ที่อาจไม่มีสมาชิกก็ได้ Binary tree ที่ไม่ว่างจะมี root สมาชิกที่เหลือ(ถ้ามี) จะแบ่งเป็นเป็น Binary tree ย่อย 2 ต้น เรียกว่า Left sub-tree และ Right sub-tree 4-Apr-17

An expression implemented by a binary tree (a + b) * (c – d) / (e + f) / + a b - c d e f * 4-Apr-17

4-Apr-17