ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
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
สรุป ศึกษาวิธีการจัดเก็บและการจัดการข้อมูล เราต้อง ตรงตามความต้องการ
ทำงานรวดเร็ว ประหยัดเนื้อที่ เข้าใจง่าย เราต้อง เลือกให้เป็น ใช้ให้เป็น สร้างให้เป็น
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.