งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

บทนำ.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "บทนำ."— ใบสำเนางานนำเสนอ:

1 บทนำ

2 หัวข้อ นิยาม ตัวอย่างการใช้งาน วัตถุประสงค์ของการศึกษาโครงสร้างข้อมูล
ตัวอย่างประสิทธิภาพเชิงเวลาการทำงาน

3 โครงสร้างข้อมูลคืออะไร
วิธีการจัดเก็บและจัดการข้อมูลให้ ตรงตามความต้องการ ทำงานรวดเร็ว ประหยัดเนื้อที่ เข้าใจง่าย จะเขียนโปรแกรมจัดเก็บและจัดการอย่างไร ?

4 การจำลองวงจรตรรก Logic Design Tools

5 การออกแบบวงจรรวม ทรานซิสเตอร์ 55 ล้านตัว กับสายสัญญาณเชื่อมต่ออีกจำนวนมาก VLSI Design

6 Games เกมคอมพิวเตอร์

7 การออกแบบทางวิศวกรรม
CAD Tools

8 ล้วนเป็นปัญหาที่เกี่ยวกับ โครงสร้างข้อมูล
และอื่น ๆ Google เก็บเอกสารอย่างไร ทำให้ค้นได้รวดเร็ว jvm เก็บออปเจกต์ต่าง ๆ คลาสต่าง ๆ ตัวแปรต่าง ๆ thread ต่าง ๆ ไว้อย่างไร Word processor เก็บตัวอักษร คำ ข้อความ ย่อหน้า สูตร รูป และอื่น ๆ ในเอกสารภายในหน่วยความจำ อย่างไร ขณะที่เรากำลังใช้งาน ... ล้วนเป็นปัญหาที่เกี่ยวกับ โครงสร้างข้อมูล

9 ข้อมูลต่าง ๆ บางชนิด ตัวภาษามีให้แล้ว (primitive)
int, double, char, boolean, ... บางชนิดคลังคำสั่งของระบบมีให้ใช้ (class) String, Color, BigDecimal, ArrayList, HashMap, ... และมีอีกมากมายที่ต้องออกแบบและสร้างเอง

10 ที่เก็บข้อมูลแบบพื้นฐาน : Collection
เก็บข้อมูลไม่มีอันดับ ซ้ำได้ A B A A C

11 ที่เก็บข้อมูลแบบพื้นฐาน : Set
เก็บข้อมูลไม่มีอันดับ ไม่ให้ซ้ำ B A A A C

12 ที่เก็บข้อมูลแบบพื้นฐาน : List
เก็บข้อมูลเรียงแบบมีอันดับ ซ้ำได้ A A C B A

13 ที่เก็บข้อมูลแบบพื้นฐาน : Queue
ข้อมูล เข้าก่อน ออกก่อน (FIFO - First-In First-Out) X A B C A

14 ที่เก็บข้อมูลแบบพื้นฐาน : Stack
ข้อมูล เข้าหลัง ออกก่อน (LIFO - Last-In First-Out) A B X C A

15 วิธีสร้างที่เก็บข้อมูล
สร้างด้วยอาเรย์ สร้างด้วยการโยง สร้างด้วยต้นไม้ สร้างด้วยตาราง อื่น ๆ + 3 a b

16 วัตถุประสงค์ เลือกให้เป็น ใช้ให้เป็น สร้างให้เป็น

17 เลือกให้เป็น List Collection Set Stack Map Queue PriorityQueue TreeSet
ArrayList LinkedList TreeSet HashSet TreeMap HashMap LinkedHashMap

18 ใช้ให้เป็น public static PuzzleBoard solve(PuzzleBoard b) {
Set set = new ArraySet(); Queue queue = new ArrayQueue(); queue.enqueue(b); set.add(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; if (! set.contains(b2) ) { queue.enqueue(b2); set.add(b2); } return null; Set set = new ArraySet(); Queue queue = new ArrayQueue(); queue.enqueue(b); set.add(b); queue.isEmpty() queue.dequeue(); set.contains(b2) queue.enqueue(b); set.add(b);

19 ใช้ให้เป็น

20 ขอสร้าง collection ด้วยอาเรย์
สร้างให้เป็น public class ArrayCollection implements Collection { private Object[] elementData; private int size; public ArrayCollection(int c) { elementData = new Object[c]; size = 0; } public void add(Object e) { elementData[size++] = e; public boolean size() { return size; public int isEmpty() { return size == 0; ... อยากได้ Collection ขอสร้าง collection ด้วยอาเรย์ พัฒนา โปรแกรม ออกแบบโครงสร้าง size 3 elementData 1 2 4 " นัท คิด วิน

21 โครงสร้างข้อมูลที่ดี
ให้บริการตามที่ต้องการ ใช้ง่าย กินเนื้อที่น้อย ทำงานได้อย่างรวดเร็ว

22 ตัวอย่าง : 15-puzzle 1 2 3 4 5 7 8 9 6 10 12 13 14 11 15

23 เลื่อนช่องว่างเพื่อผลิตตาราง
1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 ขึ้น ลง ซ้าย ขวา 1 2 3 4 5 6 9 13 7 8 10 14 11 12 15 1 2 3 4 5 6 9 13 7 8 10 14 11 15 1 2 3 4 5 6 9 10 13 14 7 8 12 11 15 1 2 3 4 5 6 9 13 7 8 10 14 12 11 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 2 3 4 5 6 9 10 13 14 7 8 11 12 15 1 2 3 4 5 6 9 10 13 14 7 8 12 15 1 2 3 4 5 6 9 13 7 8 14 11 12 15 2 3 4 5 6 7 8 9 10 10 12 12 13 14 11 11 15 ขึ้น ขวา 1 2 4 5 6 9 10 13 14 3 7 8 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 ลง ซ้าย 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

24 พบคำตอบ พบวิธีเลื่อน 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 ขึ้น ลง ซ้าย
ขวา 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 ขึ้น ลง ซ้าย ขวา ขึ้น ซ้าย ขวา 1 2 4 5 6 9 10 13 14 3 7 8 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

25 ใช้ Queue เก็บตาราง

26 15-puzzle : ส่วนของโปรแกรม
public static PuzzleBoard solve(PuzzleBoard b) { Queue queue = new ArrayQueue(); queue.enqueue(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; queue.enqueue(b2); } return null; ใช้ queue เก็บตารางที่ผลิตใหม่

27 15-puzzle : ตารางที่ผลิตอาจซ้ำกัน
2 3 4 5 6 7 8 9 10 12 13 14 11 15 ขึ้น ซ้าย ขวา ลง 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 ขึ้น ขึ้น ลง ซ้าย ขวา ซ้าย ขวา 1 2 4 5 6 9 10 13 14 3 7 8 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 8 9 10 13 14 7 11 12 15 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

28 15-puzzle : ส่วนของโปรแกรม
public static PuzzleBoard solve(PuzzleBoard b) { Queue queue = new ArrayQueue(); queue.enqueue(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; queue.enqueue(b2); } return null; Set set = new ArraySet(); set.add(b); if ( ! set.contains(b2) ) { } set.add(b); ใช้ queue เก็บตารางที่ผลิตใหม่ ใช้ set เพื่อตรวจสอบความซ้ำซ้อน

29 สร้าง Set ได้หลายแบบ public static PuzzleBoard solve(PuzzleBoard b) {
Set set = new ArraySet(); Queue queue = new ArrayQueue(); queue.enqueue(b); set.add(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; if ( ! set.contains(b2) ) { queue.enqueue(b2); set.add(b2); } return null; Set set = new HashSet(); Set set = new AVLSet(); Set set = new ArraySet(); Set set = new BSTSet();

30 เวลาการทำงาน (วินาที)
15-puzzle : ผลการทดลอง ตาราง เริ่มต้น จำนวนตาราง ที่ผลิต เวลาการทำงาน (วินาที) ArraySet BSTSet AVLSet HashSet แบบที่ 1 แบบที่ 2 แบบที่ 3 552 5242 132049 0.03 1.94 1819.6 0.02 0.22 7.08 0.04 0.18 5.71 0.05 0.12 2.56

31 สรุป ศึกษาวิธีการจัดเก็บและการจัดการข้อมูล เราต้อง ตรงตามความต้องการ
ทำงานรวดเร็ว ประหยัดเนื้อที่ เข้าใจง่าย เราต้อง เลือกให้เป็น ใช้ให้เป็น สร้างให้เป็น


ดาวน์โหลด ppt บทนำ.

งานนำเสนอที่คล้ายกัน


Ads by Google