30 มกราคม, 2554

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่13(ระหว่างวันที่ 24-28 ม.ค. 2554)

งานที่ปฏิบัติ
1. ขนย้ายและติดตั้ง Notebook จำนวน 50 เครื่อง ให้สามารถเชื่อมต่อกับระบบได้
2. เดินสาย LAN จำนวน 2 เส้น และเก็บสายให้เรียบร้อย
3. ตรวจเช็ค/แก้ไข เครื่องคอมพิวเตอร์ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 15 เครื่อง
4. ตรวจเช็ค/แก้ไข โปรแกรมที่ใช้งานไม่ได้ตามฝ่ายต่าง ๆ จำนวน 3 ฝ่าย
ปัญหาและอุปสรรค
1. จำค่าวง IP Address ของแต่ละที่ไม่ได้
2. บางโปรแกรมไม่สามารถใช้งานได้เนื่องจาก ตัวโปรแกรมไม่สมบูรณ์
วิธีการแก้ปัญหา
1. สังเกตุจากเครื่องข้าง ๆ หรือถามผู้รู้
2. ลบโปรแกรมเก่าออกก่อน แล้วทำการติดตั้งโปรแกรมใหม่
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

23 มกราคม, 2554

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่12(ระหว่างวันที่ 17-21 ม.ค. 2554)

งานที่ปฏิบัติ
1. ขนย้ายและติดตั้ง Notebook จำนวน 30 เครื่อง ให้สามารถเชื่อมต่อกับระบบได้
2. เดินสาย LAN จำนวน 10 เส้น และเก็บสายให้เรียบร้อย
3. ตรวจเช็ค/แก้ไข เครื่องคอมพิวเตอร์ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 20 เครื่อง
4. ตรวจเช็ค/แก้ไข โปรแกรมที่ใช้งานไม่ได้ตามฝ่ายต่าง ๆ จำนวน 5 ฝ่าย
ปัญหาและอุปสรรค
1. จำค่าวง IP Address ของแต่ละที่ไม่ได้
2. บางโปรแกรมไม่สามารถใช้งานได้เนื่องจาก ตัวโปรแกรมไม่สมบูรณ์
วิธีการแก้ปัญหา
1. สังเกตุจากเครื่องข้าง ๆ หรือถามผู้รู้
2. ลบโปรแกรมเก่าออกก่อน แล้วทำการติดตั้งโปรแกรมใหม่
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

16 มกราคม, 2554

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่11 (ระหว่างวันที่ 10-14 ม.ค. 2554)

งานที่ปฏิบัติ
1. ตรวจเช็ค/แก้ไข คอมพิวเตอร์และเครื่องพิมพ์ ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 20 เครื่อง
ฺ2. ตรวจเช็ค/แก้ไข โปรแกรมที่ใช้งานไม่ได้ตามฝ่ายต่าง ๆ จำนวน 5 ฝ่าย
ปัญหาและอุปสรรค
1. จำค่าวง IP Address ของแต่ละที่ไม่ได้
2. บางโปรแกรมไม่สามารถใช้งานได้เนื่องจาก ตัวโปรแกรมไม่สมบูรณ์
วิธีการแก้ปัญหา
1. สังเกตุจากเครื่องข้าง ๆ หรือถามผู้รู้
2. ลบโปรแกรมเก่าออกก่อน แล้วทำการติดตั้งโปรแกรมใหม่
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

08 มกราคม, 2554

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่10 (ระหว่างวันที่ 4-7 ม.ค. 2554)

งานที่ปฏิบัติ
1. ตรวจเช็ค/แก้ไข คอมพิวเตอร์และเครื่องพิมพ์ ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 15 เครื่อง
ฺ2. ตรวจเช็ค/แก้ไข โปรแกรมที่ใช้งานไม่ได้ตามฝ่ายต่าง ๆ จำนวน 3 ฝ่าย
3. Backup ข้อมูลภายในเครื่องคอมพิวเตอร์ Format แล้วลง Windows และโปรแกรมเสริมที่จำเป็น จำนวน 2 เครื่อง
ปัญหาและอุปสรรค
1. จำค่าวง IP Address ของแต่ละที่ไม่ได้
2. บางโปรแกรมไม่สามารถใช้งานได้เนื่องจาก ตัวโปรแกรมไม่สมบูรณ์
วิธีการแก้ปัญหา
1. สังเกตุจากเครื่องข้าง ๆ หรือถามผู้รู้
2. ลบโปรแกรมเก่าออกก่อน แล้วทำการติดตั้งโปรแกรมใหม่
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

30 ธันวาคม, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่9 (ระหว่างวันที่ 27-29 ธ.ค. 2553)

งานปฏิบัติ
1. ขนย้ายและติดตั้ง Notebook จำนวน 60 เครื่อง ติดตั้งไฟล์งานที่ใช้ในการประชุม และให้สามารถเชื่อมต่อกับระบบได้
2. ตรวจเช็ค/แก้ไข เครื่องคอมพิวเตอร์จำนวน 5 เครื่องให้สามารถเชื่อมต่อกับระบบได้
ปัญหาและอุปสรรค
1. Notebook บางเครื่องไม่สามารถเชื่อมต่อกับระบบได้
2. ไม่ทราบค่า IP วง Lan ของแต่ละที่
วิธีการแก้ปัญหา
1. เปลี่ยนเครื่องใหม่
2. ถามผู้รู้
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

26 ธันวาคม, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่8 (ระหว่างวันที่ 20-24 ธ.ค. 2553)

งานที่ปฏิบัติ
1. ขนย้ายและติดตั้งคอมพิวเตอร์จำนวน 10 เครื่อง ให้สามารถเชื่อมต่อกับระบบได้
2. เดินสาย LAN จำนวน 3 เส้น และเก็บสายให้เรียบร้อย
3. ตรวจเช็ค/แก้ไข เครื่องคอมพิวเตอร์ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 20 เครื่อง
4. เป็นเจ้าหน้าที่ประจำจุดลงนามถวายพระพร และแจกแผ่นซีดี 7 ภาพยนตร์เฉลิมพระเกียรติ
ปัญหาและอุปสรรค
1. เนื่องจากบุคคลากรน้อย ทำให้ใช้เวลานานในการขนย้าย
2. ไม่ทราบค่า IP วง LAN ของแต่ละที่
วิธีการแก้ปัญหา่
1. นำรถขนของมาช่วยในการเคลื่อนย้าย
2. สังเกตเครื่องที่สามารถเชื่อมต่อกับระบบได้ หรือถามผู้รู้
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

18 ธันวาคม, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่7 (ระหว่างวันที่ 13-17 ธ.ค. 2553)

งานที่ปฏิบัติ
1. ฺBackup ข้อมูลภายในเครื่องคอมพิวเตอร์ Format แล้วลง Windows และโปรแกรมเสริมที่จำเป็น จำนวน 5 เครื่อง
2. ตรวจเช็ค/แก้ไข คอมพิวเตอร์และเครื่องพิมพ์ ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 10 เครื่อง
3. เดินสาย LAN ภายในห้องจำนวน 2 เส้น
4. ตรวจเช็ค/แก้ไข โปรแกรมที่ใช้งานไม่ได้ตามฝ่ายต่าง ๆ จำนวน 5 ฝ่าย
ปัญหาและอุปสรรค
1. จำค่าวง IP Address ของแต่ละที่ไม่ได้
2. บางโปรแกรมไม่สามารถใช้งานได้เนื่องจาก ตัวโปรแกรมไม่สมบูรณ์
วิธีการแก้ปัญหา
1. สังเกตุจากเครื่องข้าง ๆ หรือถามผู้รู้
2. ลบโปรแกรมเก่าออกก่อน แล้วทำการติดตั้งโปรแกรมใหม่
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

12 ธันวาคม, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่6 (ระหว่างวันที่ 7-9 ธ.ค. 2553)

งานที่ปฏิบัติ
1. เดินสาย LAN ภายในห้องรองปลัดกระทรวง จำนวน 2 เส้น
2. ตรวจเช็ค/แก้ไข คอมพิวเตอร์ให้สามารถเชื่อมต่อกับระบบได้ จำนวน 5 เครื่อง
3. Backup ข้อมูลภายในเครื่องคอมพิวเตอร์ จำนวน 2 เครื่อง Format แล้ว ลง Windows ใหม่ พร้อมติดตั้งโปรแกรมเสริม และสามารถพิมพ์งานผ่านระบบได้
ปัญหาและอุปสรรค
1. พื้นที่ไม่เอื้ออำนวยเนื่องจากมีของวางขวางทางอยู่ ทำให้ไม่สะดวกในการเดินสาย LAN
2. ไม่ทราบวง IP ของแต่ละที่
3. ไม่มี Driver ของคอมพิวเตอร์
วิธีการแก้ปัญหา่
1. ขนย้ายของออกไปก่อน เมื่อเิดินสาย LAN เสร็จแล้ว จึงย้ายกลับมาเหมือนเดิม
2. สังเกตจากเครื่องที่สามารถเชื่อมต่อกับระบบได้ หรือถามผู้รู้ว่าต้องงทำอย่างไร
3. หาโหลดเอาใน Internet
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

06 ธันวาคม, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่5 (ระหว่างวันที่ 29 พ.ย.-3 ธ.ค. 2553)

งานที่ปฏิบัติ
1. ตรวจเช็ค/แก้ไขปัญหาคอมพิวเตอร์จำนวน 30 เครื่องให้สามารถเชื่อมต่อกับระบบ และสามารถพิมพ์เอกสารผ่านระบบได้
2. ติดตั้งเครื่องคอมพิวเตอร์จำนวน 2 เครื่องพร้อมทั้งเดินสาย LAN ภายในห้อง จำนวน 2 เส้น
3. ติดตั้งโปรแกรมเสริมที่จำเป็นลงในเครื่องคอมพิวเตอร์ จำนวน 5 เครื่อง
ปัญหาแลอุปสรรค
1. ไม่ทราบค่าวง LAN ในระบบของแต่ละที่
2. ที่วางคอมพิวเตอร์กับปลั๊กไฟอยู่ห่างกัน ทำให้เสียบสายไมได้
วิธีการแก้ปัญหา
1. สังเกตเครื่องที่สามารถเชื่อมต่อกับระบบได้ หรือถามผู้รู้
2. นำปลั๊กพ่วงมาเชื่อมต่อกัน
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้กระบวนการ วิธีแก้ปัญหาของคอมพิวเตอร์ ทั้ง Hardware และ Software

27 พฤศจิกายน, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่4 (ระหว่างวันที่ 22-26 พ.ย.2553)

านที่ปฏิบัติ
1. ติดตั้งโปรแกรมฐานข้อมูลเรื่องร้องเรียน/ร้องทุกข์ ของกระทรวงมหาดไทย และทำการทดสอบโปรแกรม
2. เรียนรู้เรื่องระบบ Network จากหัวหน้างาน
3. ฝึกเป็นเจ้าหน้าที่ฝ่ายเทคนิคในห้องประชุม 3 คอยดูแลในเรื่องของการนำเสนองาน, การเชื่อมต่ออุปกรณ์ต่าง ๆ, ระบบเสียง และควบคุมการอัดเสียงในที่ประชุม
4. อำนวยความสะดวกในการประชุมใหญ่ของกระทรวงในห้องประชุม 1 โดยการติดตั้ง Notebook จำนวน 65 เครื่อง และให้สามารถเชื่อมต่อกับระบบ Network ได้
5. ตรวจเช็ค/แก้ไขปัญหา คอมพิวเตอร์จำนวน 7 เครื่องให้สามารถเชื่อมต่อกับระบบ Network ได้
ปัญหาและอุปสรรค
1. การติดตั้งโปรแกรมนั้นไม่เคยใช้มาก่อน และค่อนข้างจะซับซ้อน จึงทำให้ใช้เวลานานกว่าปกติ
2. ในการเรียนรู้เรื่องระบบ Network บางอย่างที่หัวหน้างานสอนจำไม่ได้
3. เรื่องระบบเสียงในห้องประชุม 3 เกิดปัญหาขัดข้องบางช่วง
4. Notebook ที่ใช้ในห้องประชุม 1 บางเครื่องไม่สามารถใช้งานได้ตามต้องการ
5. ไม่ทราบค่า IP ของเครื่อง และวง Lan ของแต่ละเครื่อง
วิธีการแก้ปัญหา
1. พยายามอ่านตามคู่มือแล้วทำตามก่อน ถ้าไม่ได้ก็ถามผู้รู้ว่าจะต้องทำอย่างไร
2. ทำความเข้าใจแล้วจดบันทึก ทบทวนอยู่เสมอ
3. พยายามใช้ อุปกรณ์ตัวที่เกิดปัญหาให้น้อยที่สุด
4. เปลี่ยน Notebook เครื่องใหม่แล้วตรวจสอบ ให้สามารถใช้งานได้ตามต้องการ
5. สังเกตจาก เครื่องใกล้ๆ กันที่สามารถเชื่อมต่อกับระบบได้ หรือถามผู้รู้ ว่าต้องใช้ IP อะไร
ประโยชน์ที่ได้รับ
1. ได้รับความรู้เรื่องโปรแกรมฐานข้อมูลเรื่องร้องเรียน/ร้องทุกข์ของกระทรวงมหาดไทย
2. ได้รับความรู้เรื่องระบบ Network

21 พฤศจิกายน, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่3 (ระหว่างวันที่ 15-19 พ.ย.2553)

งานที่ปฏิบัติ
1. ตรวจเช็ค เพิ่ม/แก้ไข เปลี่ยนแปลง ข้อมูล User ในระบบ ATM NETWORK ทั่วประเทศ
2. ตรวเช็ค IP Address อุปกรณ์ในระบบ ATM NET WORK ทั่วประเทศ
3. ได้เรียนรู้จากบริษัทที่เข้ามาแนะนำโปรแกรมที่ใช้เกี่ยวกับระบบ GIS
4. จัดสถานที่ที่ใช้ในการเลือกตั้ง (สอ.มท.) รวมทั้งจัดหาคอมพิวเตอร์ เครื่องพิมพ์ มาเชื่อมต่อกันผ่่านระบบเครือข่าย
5. เดินสายโทรศัพท์ ภายในห้องชั้น 2 ให้ตรงเลขหมายของเครื่องโทรศัพท์ที่กำหนดไว้
ปัญหาและอุปสรรค
1. บางหน่วยงานที่เชื่อต่อกับระบบ ATM NETWORK มี User เกินมา หรือไม่ก็มี User ขาดไป ไม่ครบตามที่กำหนดไว้
2. อุปกรณ์บางตัวไม่สามารถเชื่อมต่อกับระบบได้
3. ยังไม่ชำนาญเรื่องการเข้าสายโทรศัพท์ วิธีการเดิืนสายโทรศัพท์ให้เรียบร้อยเป็นระเบียบ
วิธีการแก้ปัญหา
1. ถามผู้รู้ว่าจะต้องทำอย่างไร เมื่อมี User เกินมา หรือ ขาดไป ไม่ครบตามกำหนด
2. ถามผู้รู้ว่าเกิดจากอะไร แล้วจะแก้ไขปัญหานั้นอย่างไร ให้สามารถเชื่อมต่อกับระบบได้
3. ถามผู้รู้เรื่องการเข้าสายโทรศัพท์ และวิธีการเดินสายให้เป็นระเบียบ ว่าควรทำอย่างไร
ประโยชน์ที่ได้รับ
1. ได้รับความรู้เรื่องการเพิ่ม/แก้ไข เปลี่ยนแปลง ข้อมูล User ในระบบ ATM NETWORK เพิ่มมากขึ้น
2. ได้เรียนรู้เรื่องการเดินสายโทรศัพท์ เพิ่มขึ้น

12 พฤศจิกายน, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่2 (ระหว่างวันที่ 8-12 พ.ย.2553)

งานที่ปฏิบัติ
1. ได้ทราบถึงวิธีการเข้าหัวสาย Lan วิธีการเดินสาย Lan
2. ตรวจเช็ค แก้ไข เครื่องคอมพิวเตอร์ที่ไม่สามารถเชื่อมต่อกับระบบ Networkได้ ให้สามารถเชื่อมต่อกับระบบได้
3. ตรวจเช็ค แก้ไขเครื่องคอมพิวเตอร์ที่มีปัญหา ให้สามารถใช้การได้โดยทำการเปลี่ยนอุปกรณ์ภายใน Format แล้วลง Windows และโปรแกรมเสริมต่างๆ ที่จำเป็นใหม่
4. ตรวจสอบ แก้ไขเครื่องพิมพ์ให้สามารถใช้งานได้ในระบ Network
ปัญหาและอุปสรรค
1. ยังไม่ค่อยชำนาญการเข้าหัวสาย Lan และวิธีการเดินสาย Lan ให้เรียร้อยเท่าที่ควร
2.จำค่่า IP Address ไม่ได้ ทำให้ช้าต่อการทำงาน
3. หาสาเหตุของเครื่องคอมพิวเตอร์ที่ใช้การไม่ได้ ยังไม่ชัดเจน
วิธีการแก้ปัญหา
1. หมั่นฝึกฝนวิธีการเข้าหัวสา Lan วิธีการเดินสาย Lan ให้ใช้งานได้ และเป็นระเบียบ
2. ถามผู้รู้ จดบันทึกไว้ และหมั่นทำบ่อยๆ ให้ชำนาญ
3. ถามผู้รู้ว่าเกิดจากอะไร แล้วจะแก้ไขอย่างไร
ประโยชน์ที่ได้รับ
1. ได้เรียนรู้วิธีการเข้าหัว Lan และวิธีการเดินสาย Lan เพิ่มมากขึ้น

05 พฤศจิกายน, 2553

สรุปการฝึกประสบการณ์วิชาชีพสัปดาห์ที่1 (ระหว่างวันที่ 1-5 พ.ย.2553)

งานที่ปฏิบัติ
1. ได้เรียนรู้เรื่อง ATM NETWORK ซึ่งเป็นระบบของกระทรวงมหาดไทยที่ใช้ควบคุมระบบราชการของกระทรวงทั้งหมด ทราบถึงโครงสร้าง ขั้นตอนกระบวนการ ในการทำงาน
2. ได้เรียนรู้เรื่อง NETWORK MANAGEMENT ซึ่งเป็นเรื่องของการจัดการกับระบบ NETWORK ทั้งหมดของกระทรวงมหาดไทย
3. ได้เรียนรู้ในส่วนของอุปกรณ์ในระบบเครือข่าย ทราบว่าอุปกรณ์แต่ละอย่างมีหลักการใช้งาน และทำงานอย่างไร
4. ได้เรียนรู้เรื่องการ set ค่า IP address ของเครื่องลูกข่ายในระบบ ATM NETWORK
ปัญหาและอุปสรรค
1. เรื่อการปรับตัวเพราะเนื่องจากเป็นวันแรกของการฝึกประสบการณ์
2. ยังไม่ค่อยเข้าใจเรื่องระบบ ATM NETWORK เท่าที่ควรเพราะเป็นระบบที่เพิ่งจะเรียนรู้
3. ในการ set ค่า IP Address ของอุปกรณ์ในระบบ ATM ยังไม่ชำนาญเท่าที่ควร
วิธีการแก้ปัญหา
1. พยายามปรับตัวให้เข้ากับสภาวะแวดล้อม
2. พยามยามศึกษา ถามผู้รู้ ค้นคว้าด้วยตนเองเพื่อที่จะทำให้มีความเข้าใจมากยิ่งขึ้น
3. หมั่นฝึกฝน ฝึกทำให้ชำนาญ
ประโยชน์ที่ได้รับ
1. ได้รับความรู้เรื่อง ATM NETWORK เพิ่มขึ้น
2. ได้รับความรู้เรื่อง NETWORK MANAGEMENT เพิ่มขึ้น
3. ได้รับความรู้เรื่องอุปกรณ์ในระบบเครือข่ายเพิ่มขึ้น



ระบบเครือข่าย ATM NETWORK




DIAGRAM ATM NETWORK

20 สิงหาคม, 2553

วิธีทำBLOG

ขั้นตอนการทำ

1. สร้าง บัญชี Gmail กำหนดให้ใช้ E- Mail เป็น MUรหัสนักศึกษา



2. ไปที่ http://www.blogspot.com/ แล้วกดสร้าง BLOG





3. กรอกรายละเอียดในการสมัคร BLOG กำหนดให้ชื่อที่แสดง เป็นภาษาอังกฤษตัวพิมพ์ใหญ่



4. เมื่อสมัคร BLOG เสร็จ สามารถที่จะ เปลี่ยนแปลง Template โดยการเข้าไปที่ การออกแบบ




5. เลือก เครื่องมือออกแบบแม่แบบ




6. เลือก Template ปรับแต่งตามต้องการ เสร็จแล้วกดที่ ใช้กับ บล็อก



7. ไปที่ บทความใหม่ เพิ่มทำการเพิ่มบทความ

15 ตุลาคม, 2552

ลูกแรดเตรียมพร้อมล่าเหยื่อ

สิ่งที่ได้รับจากการเรียนวิชาเตรียมฝึกประสบการณ์วิชาชีพ

จากการเรียนวิชาเตรียมฝึกประสบการณ์วิชาชีพสามารถนำประสบการณ์จากการเรียนมาปรับใช้ในชีวิตประจำวันได้ เช่น
- การคิดจะต้องคิดอย่างเป็นระบบ วางแผนได้อย่างเหมาะสม
- การทำงานก็จะต้องทำให้ตรงเวลา ถูกต้อง และรวดเร็วมากขึ้นกว่าที่เคยทำ
- การติดต่อสื่อสารกันระหว่างบุคคล เพื่อนร่วมงานในห้อง และเพื่อนร่วมงานต่างห้อง
- การรู้จักช่วยเหลือ ความมีน้ำใจเป็นสิ่งที่ดี สมควรที่จะฝึกเอาไว้
- รู้จักปัญหา วิธีแก้ปัญหา และมีความละเอียดรอบคอบมากขึ้น
- ได้เรียนรู้บุคคลแต่ละบุคคล ซึ่งทำให้เรามีความคิดมากขึ้น
- รู้หลัก วิธีการทำงาน จะต้องทำเป็นขั้นตอนอย่างไร และเมื่อเกิดเหตุการณ์ขึ้นควรจะแก้ไขอย่างไร
- เป็นการฝึกความอดทนไปในตัว เมื่อเจอเรื่องต่างๆเข้ามาพร้อมๆกัน ทั้งโครงการ การบ้าน อ่านหนังสือสอบ ส่งงาน และเรื่องความรับผิดชอบต่างๆที่บ้าน

10 กันยายน, 2552

DTS 10-09/09/2552

สรุป
กราฟ (Graph) เป็นโครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) มีความแตกต่างจากโครงสร้างข้อมูลทรีในบทที่ผ่านมา แต่เป็นลักษณะพิเศษแบบหนี่งของกราฟโดยทรีเป็นกราฟอะไซคลิกที่ไม่มีการวนลูปและการวนถอยกลับ เป็นกราฟเชื่อมกันที่มีเพียงเอจเดียวระหว่างสองโหนด กราฟมีลักษณะเป็นเซ็ตของจุด (Point) และเซ็ตของเส้น (Line) ซึ่งแต่ละเส้นทำหน้าที่เชื่อมต่อจุดเข้าด้วยกัน แต่ละจุดเรียกว่าโหนด (Node) ของกราฟและเส้นเรียกว่าเอจ (Edge) บางครั้งเอจจะเรียกว่าอาร์ค (Arc) และโหนดเรียกว่าเวอร์ทิค (Vertice) โดยกำหนดให้กราฟ G มีเซ็ตของโหนดเป็น VG และเซ็ตของเอจเป็น EG

การสร้างกราฟใช้งาน โดยปกติภาษาเขียนโปรแกรมมีการสร้างโครงสร้างข้อมูลให้ใช้งานได้ทันที (Build-in Type) แต่ไม่มีกราฟรวมอยู่ด้วย ดังนั้น ผู้เขียนโปรแกรมที่ต้องการสร้างกราฟขึ้นมาใช้งานจะมีการนำโครงสร้างข้อมูลอื่นมาใช้เป็นกราฟ โดยมีอยู่ 3 แนวทางที่นำมาใช้ คือ
ใช้แมตทริกติดกัน (Adjacency Matrix) หรืออาร์เรย์สองมิติกำหนดเป็นกราฟ
ใช้ลิสต์แบบไดเร็กทอรี่โหนด (Node Directory) กำหนดเป็นกราฟ
ใช้มัลติลิสต์ (Multi-List) กำหนดเป็นกราฟ
กราฟแบบแมตทริกติดกัน
หมายความว่า หากมีเอจที่เชื่อมต่อกันระหว่างโหนด i กับ j ก็จะได้ A(i,j) = 1 ไม่เช่นนั้นมีค่าเป็น 0
กราฟแบบไดเร็กทอรี่โหนด
เทคนิคการใช้แมตทริกติดกันเป็นกราฟมีความต้องการเก็บข้อมูลเกี่ยวกับเอจครบทุกรูปแบบระหว่างโหนดที่เป็นไปได้ เมื่อกราฟมี N โหนดความเป็นไปได้จะมีเอจเชื่อมกันเท่ากับ N2 ซึ่งทำให้มีค่า 0 เป็นจำนวนมาก ดังนั้น การนำลิ้งค์ลิสต์มาใช้เป็นกราฟจึงมีความเหมาะสมกว่า ซึ่งจะมีเฉพาะเอจที่เชื่อมต่อกันเท่านั้น การใช้โครงสร้างลิ้งค์ลิสต์เป็นกราฟจะมี 2 รูปแบบ คือ แบบไดเร็กทอรี่โหนด (Node Directory) และแบบมัลติลิสต์ (Multi-List) ในหัวข้อถัดไป
กราฟแบบไดเร็กทอรี่โหนดประกอบด้วยสองส่วน คือ ไดเร็กทอรี่ (Directory) และเซ็ตของลิ้งค์ลิสต์ แต่ละค่าในไดเร็กทอรี่มีสำหรับแต่ละโหนดที่อยู่ในกราฟ ค่าในไดเร็กทอรี่สำหรับโหนด i จะชี้ไปยังลิ้งค์ลิสต์ที่เชื่อมต่อไปยังโหนดที่เชื่อมต่อกับโหนด i ลิ้งค์ลิสต์เป็นเรคคอร์ดประกอบด้วยสองเขตข้อมูล คือ ค่าความแตกต่างของแต่ละโหนด (Node Identifier) เป็นหมายเลขโหนดและตัวเชื่อมชี้ไปยังสมาชิกถัดไปในลิสต์ ดังนั้น ไดเร็กทอรี่จะหมายถึงโหนดส่วนลิ้งค์ลิสต์หมายถึงเอจ
กราฟแบบมัลติลิสต์
ในโครงสร้างกราฟแบบมัลติลิสต์ประกอบด้วยสองส่วนคือ ไดเร็กทอรี่ของโหนดและเซ็ตลิ้งค์ลิสต์ของเอจ แต่ละค่าในไดเร็กทอรี่คือแต่ละโหนดที่อยู่ในกราฟ ดังนั้น ค่าในไดเร็กทอรี่สำหรับโหนด i จะชี้ไปยังลิ้งค์ลิสต์ที่เชื่อมต่อไปยังโหนดที่เชื่อมติดกับโหนด i ลิ้งค์ลิสต์เป็นเรคคอร์ดประกอบด้วยสองลิสต์ติดกันใช้เป็นโหนดกัวและโหนดท้ายของเอจ ดังในรูปที่ 10.15 เป็นโครงสร้างของแต่ละเอจที่มี Edge(Vi,Vj)
การวิ่งตามเส้นทางในกราฟ
แอปพลิเคชั่นที่เขียนขึ้นมาเมื่อใช้งานกราฟส่วนใหญ่ต้องเข้าไปเรียกใช้งานในแต่ละโหนด เช่น การพิมพ์รายการกิจกรรมในระบบการบริหารจัดการโครงการ การแสดงผลระยะทางระหว่างเมือง เทคนิคพื้นฐานการวิ่งตามเส้นทางในกราฟ (Graph Traversal) ที่จะกล่าวถึง คือ การวิ่งตามแนวกว้างก่อน (Breadth – first) และการวิ่งตามแนวลึกก่อน (Depth – first) การวิ่งตามเส้นทางมีสิ่งที่ต้องระวัง คือ การวิ่งไปถึงแต่ละโหนดควรมีเพียงครั้งเดียว การวิ่งซ้ำโหนดเดิมทำให้การทำงานและผลที่ได้เกิดขึ้นซ้ำจากการวิ่งย้อนตามเส้นทางที่เคยผ่านมาแล้ว และมีหลายเส้นทางที่เชื่อมต่อระหว่างสองโหนด การเขียนอัลกอริทึมการวิ่งตามเส้นทางในกราฟจะใช้เครื่องหมายหรือตัวมาร์ก (Mark) บอกให้ทราบว่ามีการวิ่งมายังโหนดนี้แล้ว โดยก่อนหน้านี้จะถูกมาร์กว่ายังไม่วิ่งมา หรือเปลี่ยนมาใช้ตัวมาร์กกับเอจแทน ดังนั้น เอจที่ผ่านไปแล้วจะไม่ถูกรวมกับเอจอื่น ๆ ที่เหลือ เครื่องหมายหรือตัวมาร์กจะใช้เป็นมาร์กบิต (Mark Bit) เก็บไว้ในแต่ละโหนดหรือเอจ
การวิ่งตามแนวกว้างก่อน
การวิ่งตามเส้นทางในกราฟตามแนวกว้างก่อน (Breath – first Traversal) หรือการค้นหาตามแนวกว้างก่อน (Breath – first Traversal) เริ่มด้วยการเลือกมาหนึ่งโหนดเป็นตำแหน่งเริ่มต้นและทำเครื่องหมายว่าวิ่งผ่านมาแล้ว จากนั้นวิ่งไปยังโหนดทุกโหนดที่ติดกับโหนดนี้และยังไม่วิ่งผ่านและทำเครื่องหมาย ทำเช่นนี้จะกระทั่งวิ่งผ่านทุก ๆ โหนดที่มีอยู่ในกราฟ การวิ่งตามแนวกว้างในกราฟจากรูปที่ 10.13 ผลจากการวิ่งไปยังแต่ละโหนดจะมีลำดับเป็น 1,2,3,4,5,6,7,8 หรือมีลำดับเป็น 1,3,2,6,5,4,7,8 ก็ได้ ขึ้นอยู่กับการเลือกโหนดที่จะวิ่งผ่านทางด้านซ้ายหรือขวาก่อน อัลกอริทึมการวิ่งตามเส้นทางในแนวกว้างก่อนจะใช้โครงสร้างข้อมูลคิวเพื่อเก็บโหนดที่วิ่งผ่านไปแล้วในแต่ละระดับของกราฟ แต่ละโหนดที่เก็บในคิวจะใช้สำหรับวิ่งไปยังโหนดติดกันที่ยังไม่ได้วิ่งไป ทำจนวิ่งผ่านทุกโหนดในกราฟและสิ้นสุดลงเมื่อคิวว่าง อัลกอริทึมการวิ่งตามเส้นทางในแนวกว้างก่อนดังในตารางที่ 10.1

Sorting
การเรียงลำดับ (sorting) เป็นการจัดให้เป็นระเบียบมีแบบแผน ช่วยให้การค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาคำตามตัวอักษรไว้อย่างมีระบบและเป็นระเบียบ หรือ การค้นหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับ ตามชื่อและชื่อสกุลของเจ้าของโทรศัพท์ไว้ ทำให้สามารถค้นหา หมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็ว
วิธีการเรียงลำดับสามารถแบ่งออกเป็น 2 ประเภท คือ
(1)การเรียงลำดับแบบภายใน (internal sorting)เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก เวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก
(2) การเรียงลำดับแบบภายนอก(external sorting) เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล (file) เวลาที่ใช้ในการเรียงลำดับต้องคำนึงถึงเวลาที่เสียไประหว่างการถ่ายเทข้อมูลจากหน่วยความจำหลักและหน่วยความจำสำรองนอกเหนือจากเวลาที่ใช้ในการเรียงลำดับข้อมูลแบบภายในการเรียงลำดับแบบเลือก (selection sort)ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับ
การเรียงลำดับแบบเลือกเป็นวิธีที่ง่าย แต่เสียเวลาในการจัดเรียงนาน โดยจะทำการเลือกข้อมูลมาเก็บไว้ตามตำแหน่งที่กำหนด คือ กำหนดให้เรียงข้อมูลจากค่าน้อยไปหาค่ามาก ก็จะทำการเลือกข้อมูลตัวที่มีค่าน้อยที่สุดมาอยู่ที่ตำแหน่งแรกสุด และค่าที่อยู่ตำแหน่งแรกก็จะมาอยู่แทนที่ค่าน้อยสุด แล้วทำการเลือกไปเรื่อยๆ จนครบทุกค่า ค่าที่ได้ก็จะเรียงจากน้อยไปหามาก
การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน2. ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย
การเรียงลำดับแบบแทรก (insertion sort)
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกใหม่เข้าไปในเซต ที่มีสมาชิกทุกตัวเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับด้วย
วิธีการเรียงลำดับ
1. เริ่มต้นเปรียบเทียบจากข้อมูลในตำแหน่งที่ 1 กับ 2หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้ายก็ได้ถ้าเป็นการเรียงลำดับจากน้อย ไปมาก
2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยก็จะจัดให้ข้อมูลที่มีค่ามากอยู่ในตำแหน่งก่อน
การเรียงลำดับแบบฐานเป็นวิธีที่พิจารณาเลขที่ละหลัก โดยจะพิจารณาเลขหลักหน่วยก่อน แล้วทำการจัดเรียงข้อมูลทีละตัวตามกลุ่มหมายเลข จากนั้นนำข้อมูลที่จัดเรียงในหลักหน่วยมาจัดเรียงในหลักสิยต่อไปเรื่อยๆจนครบทุกหลัก ก็จะได้ข้อมูลที่ต้องการ การเรียงลำดับแบบฐานไม่ซับซ้อน แต่ใช้เนื้อที่ในหน่วยความจำมาก

05 กันยายน, 2552

DTS 09-02/09/2552

สรุป
ไบนารีทรี
นิยามว่า ไบนารีทรี เป็น ทรีว่าง หรือทรีที่ประกอบด้วยโหนดรากที่เรียกว่า ราก กับ ไบนารีทรี 2 ทรี เรียกว่า ทรีย่อยทางซ้าย (left subtree) และ ทรีย่อยทางขวา (right subtree) ของราก การสร้างไบนารีทรี ที่มี
โหนดเดียว สามารถสร้างโหนดนั้นเป็นโหนดรากที่มีทรีย่อยทางซ้าย และทรีทางขวาเป็นทรีว่าง จะเห็นว่า
ไบนารีทรีแตก ต่างจากทรีทั่วไป เนื่องจากในไบนารีทรี ความหมายของคำว่า ซ้าย หรือ ขวา มีความสำคัญ ไบนารีทรี 2 โหนด ดังนั้นไบนารีทรีสามรถได้มาจากทรีแบบลำดับที่เหมาะสมกัน โดยการแยกกิ่งทางซ้ายออกจากกิ่งทางขวา
การเปลี่ยนทรีทั่วไปเป็นไบนารีทรี
ไบนารีทรีเป็นโครงสร้างข้อมูลที่มีประสิทธิภาพ แต่มีข้อจำกัดว่า แต่ละโหนดมีลูกได้ไม่เกิน 2 และในการประยุกต์ ใช้งานส่วนใหญ่ โครงสร้างข้อมูลเป็นจำนวนใดๆ ได้ตามใจ การเปลี่ยนทรีทั่วไปเป็นไบนารีทรี

เริ่มต้นจะเชื่อมโหนด แต่ละโหนดกับโหนดลูกซ้ายสุดของโหนดนั้น ซึ่งเรียกว่าโหนดแรก ต่อมาเชื่อมแต่ละโหนดยกเว้นโหนดรากกับโหนดถัดไป ที่มีพ่อเดียวกัน(พี่น้อง) ซึ่งเรียกว่าเชื่อมโหนดลูกถัดไป
เพื่อให้โครงสร้างของไบนารีทรีที่ดีกว่านี้ จะต้องหมุนทรีเล็กน้อยตามเข็มนาฬิกา ซึ่งจะทำให้เส้นเชื่อมที่ชี้
ลงล่าง ชี้ลงไปทางซ้าย และเส้นเชื่อมที่ชี้ตามแนวนอน ชี้ลงไปข้างล่างทางขวา
ป่าและสวน
ป่า (forest) หมายถึงของทรีที่เป็นทรีแบบรก และ สวน (orchard) หมายถึง ชุดของทรีแบบลำดับ แต่โดยทั่วไป แล้วป่ากับสวนมีความหมายเดียวกัน คือ ชุดของทรีทั่วไป
สามารถสร้างป่าหรือสวนได้ โดยการขจัดรากออกไปจากทรีแบบราก หรือแบบลำดับและทำนองเดียวกัน สามารถแปลง จากป่าแสวนไปเป็นไบนารีทรีได้มีขั้นตอนดังต่อไปนี้
1.ขจัดเส้นเชื่อมเดิมออก
2.แปลงทรีแต่ละต้นให้เป็นไบนารีทรี
3.เชื่อมโหนดรากของทรีเขาด้วยกัน ในแนวนอนโดยใช้ความสัมพันธ์พี่น้อง
4.หมุนทรีที่ได้ 45 องศาตามเข็มนาฬิกา ซึ่งจะทำให้เส้นเชื่อมในแนวตั้งกลายเป็นเส้นเชื่อมทางซ้าย และเส้นเชื่อมในแนวนอนกลายเป็นเส้นเชื่อมทางขวา

การท่องไบนารีทรี (traversal of binary tree)
เป็นการเคลื่อนที่ไปยังโหนดทุกโหนดของไบนารีของทรี หรือการเยี่ยมโหนดทุกโหนดของทรี ในข้อมูล

แบบทรีโหนด ทุกโหนดที่จะท่องมีลำดับแตกต่างกัน ที่โหนดใด ไๆที่กำหนดให้จะต้องมีการกระทำ 3 อย่าง ในลำดับใดๆ คือ
1. เยี่ยมโหนดนั้น
2. ท่องไปยังทรีย่อยทางซ้ายของโหนดนั้น
3. ท่องไปยังทรีย่อยทางขวาของโหนดนั้น
จุดสำคัญของของการท่องไบนารีทรีคือ จะเยี่ยมททรีย่อยก่อนการท่องทรีย่อยที่มีอยู่ หรือจะเยี่ยมโหนดนั้นในระหว่างการท่องทรีย่อยของโหนดนั้น หรือจะเยี่ยมดหนดนั้นในระหว่างการท่องทรีย่อยภายหลังจากการท่องทรีย่อย ทั้งสองของโหนดนั้นเสร็จเรียบร้อยแล้ว
ถ้าเรากำหนดให้การเยี่ยมโหนด เป็นงาน V การท่องทรีย่อยทางซ้ายเป็น L การท่องทรีย่อยทางขวาเป็น R จึงจะ ได้วิธีการท่องทรีทั้งหมด 6 วิธี
VLR
LVR
LRV
VRL
RVL
RLV
การท่องทรีทั้ง 6 วิธีดังกล่าวเราจะลดเหลือ 3 วิธี ที่มีการท่องทรีย่อยทางซ้ายก่อนการท่องทรีย่อยทางขวา ส่วนอีก 3 วิธีที่เหลือ ก็เหมือนกับเป็นภาพกระจกเงาของ 3 วิธี ดังกล่าววิธีการท่องทรีย่อยทางซ้ายก่อนทรีย่อยทางขวา 3 วิธีดังกล่าว เรามีชื่อเรียกเฉพาะดังนี้
แบบ VLR เรียกว่า พรีออร์เดอร์ (preoder)
แบบ LVR เรียกว่า อินออร์เดอร์ (inorder)
แบบ LRV เรียกว่า โพสต์ออร์เดอร์(postorder)
การเรียกชื่อ 3 วิธีดังกล่าว จะเรียกตามลำดับการเยี่ยมโหนด V นั่นคือการท่องแบบพรีออร์เดอร์จะเยี่ยม
โหนด V ก่อนการเยี่ยมทรีย่อยทาง ซ้ายและทางขวา การท่องแบบอินออร์เดอร์จะเยี่ยมโหนด V ในระหว่างการท่องทรีย่อยทางซ้าย และทรีย่อยทางขวา และการท่องแบบโพสต์ออร์เดอร์ โหนด V จะถูกเยี่ยมหลังจากท่องทรีย่อยทางซ้ายและทางขวา มาแล้ว
การท่องแบบพรีออร์เดอร์ โหนดรากจะต้องถูกเยี่ยมเป็นอันดับแรก จากนั้นจะเคลื่อนไปท่องยังทรีย่อยทางซ้าย และจากนั้นก็จะเคลื่อนไปเยี่ยมทรีย่อยทางขวาของโหนดราก
การท่องแบบอินออร์เดอร์ ก่อนที่จะมีการเยี่ยมโหนดราก จะท่องทรีย่อยทางซ้ายของโหนดรากก่อน จากนั้นจะเคลื่อน ไปเยี่ยมโหนดราก และสุดท้ายก็จะเยี่ยมโหนดทางขวาของโหนดราก
การท่องแบบโพสต์ออร์เดอร์ จะท่องทรีย่อยทางซ้ายและทางขวาก่อนที่จะเยี่ยมโหนดราก
การประยุกต์ใช้ ไบนารีทรีกับนิพจน์ ก็สามารถจะกระทำได้ ถ้าประยุกต์ใช้แบบอินออร์เดอร์ จะได้ นิพจน์อินฟิกส์ ถ้าประยุกต์ใช้แบบโพสออร์เดอร์ จะได้นิพจน์โพสต์ฟิกส์ถ้าประยุกต์ใช้แบบพรีออร์เดอร์ จะได้นิพจน์
พรีฟิกส์
ไบนารีแบบเทรด
การท่องไบนารีแบบทรีดังข้างต้น จะมีขั้นตอนการทำงานแบบเรียกซ้ำ จึงต้องมีการใช้สแตกมาช่วย คือในขณะที่ ทำการท่องไบนารีทรี จะเก็บตำแหน่งต่าง ๆ ที่มีการเคลื่อนที่ผ่านไปไว้ในสแตก และเมื่อต้องการย้อนกลับไปทางเดิมก็จะทำ การพ็อพสแตกเพื่อนำตำแหน่งต่าง ๆออกมา
วิธีการที่ประสิทธิภาพในการท่องไบนารี โดยการให้ลิงค์ทางขวาของแต่ละโหนดที่เป็น NULL เก็บลิงค์พิเศษ ที่ชี้ไปยังโหนดที่มาตามหลังโหนดนั้นๆ ในการท่องไบนารีทรี และเรียกลิงค์พิเศษนี้ว่า "เทรดทางขวา"(right tread) การใช้เทรดทำให้การท่องทำได้ง่ายขึ้น เพราะเพียงแต่เดินตามลิงค์ธรามดา หรือเดินตามเทรดเพื่อหาโหนดถัดไป และต่อมาเมื่อสร้างเทรดทางซ้าย (left tread) ด้วยโดย ให้โหนดที่เป็นลิงค์ทางซ้ายเป็น NULL เก็บลิงค์พิเศษที่ชี้ไปยังโหนดที่มาก่อน ซึ่งจะทำให้ได้ไบนารีเทรดแบบสมบูรณ์(Fully threaded binary tree) และในทำนองเดียวกันก็สมารถสร้างเทรดแบบพรีออร์เดอร์ และโพสต์ออร์เดอร์ ได้ โดยการให้ลิงค์ทางซ้ายแทนค่าNULL ชี้ไปยังโหนดที่มาก่อนแบบพรีออร์เดอร์หรือโพสต์ออร์เดอร์และลิงค์ทางขวามีค่าเป็น NULL ชี้ไปยังโหนดที่มาทีหลัง แบบพรีออร์เดอร์ หรือ โพสต์ออร์เดอร์ ในการเขียนโปรแกรม ต้องมีวิธีการบางอย่างที่จะบอกว่าลิงค์แต่ละตัวเป็นลิงค์ที่ชี้ไปยังทรีย่อยปกติหรือเป็นเทรดที่ชี้

เอ็กซ์เพรสชันทรี (Expression Tree)
เป็นการนำเอาโครง สร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี ซึ่งแต่ละโหนดเก็บตัวดำเนินการ (Operator) และและตัวถูกดำเนินการ(Operand) ของนิพจน์คณิตศาสตร์นั้น ๆ ไว้ หรืออาจจะเก็บค่านิพจน์ทางตรรกะ (Logical Expression)นิพจน์เหล่านี้เมื่อแทนในทรีต้องคำนึงลำดับขั้นตอนในการคำนวณตาม ความสำคัญของเครื่องหมายด้วยโดยมีความสำคัญตามลำดับดังนี้
- ฟังก์ชัน
- วงเล็บ ( )
- ยกกำลัง
- เครื่องหมายหน้าเลขจำนวน
- คูณ หรือ หาร * /
- บวก หรือ ลบ + -
- ถ้ามีเครื่องหมายที่ระดับเดียวกันให้ทำจากซ้ายไปขวา
การ แทนนิพจน์ในเอ็กซ์เพรสชันทรี ตัวถูกดำเนินการจะเก็บอยู่ที่โหนดใบส่วนตัวดำเนินการจะเก็บในโหนดกิ่งหรือ โหนดที่ไม่ใช่โหนดใบ

29 สิงหาคม, 2552

DTS 08-26/08/2552

สรุป
โครงสร้างทรี ทรีเป็นกราฟแบบมีทิศทาง ที่มีโครงสร้างแบบลำดับชั้น ทิศทางของกราฟที่แทนทรีจะมีทิศทางจากบนลงล่าง ดังนั้นการกวาดทรี เราจึงไม่นิยมแสดงทิศทางของเส้นเชื่อม
นิยามทรี
จากรูปโครงสร้างทรี เราให้นิยามทรีในรูปแบบอื่นๆได้อีก เช่น การให้นิยามในรูปของการเรียกซ้ำซึ่งสอดคล้องกับลักษณะธรรมชาติของทรี ดังนี้คือทรีประกอบด้วย
โหนด R ซึ่งเรียกว่า โหนดราก (root) และ ทรีย่อย (subtree) จำนวนศูนย์ หรือมากกว่าศูนย์ ได้แก่ T1,T2,...,Tk ซึ่งแต่ละทรีย่อยจะเชื่อมกับโหนดราก (R)โดยตรงด้วยเส้นเชื่อม
การเรียกชื่อองค์ประกอบของทรี
โหนดที่อยู่ระดับบนสุดของทรี เรียกว่า โหนด R ,โหนดราก, พ่อ (father)โหนดรากของทรีย่อยของ R เรียกว่าลูก (child) ของ R โหนดที่ไม่มีโหนดลูก เรียกว่า
โหนดใบ (leaf node)เส้นเชื่อมโหนดทรี เรียกว่า กิ่ง (branch)โหนดที่มีทั้งพ่อทั้งลูก เรียกว่า โหนดกิ่ง (branch node)โหนดที่มีพ่อเดียวกัน เรียกว่า โหนดพี่น้อง (sibling) และยังอาจนิยามโหนดว่าเป็น โหนดปู่ (grandfather) หรือ โหนดหลาน (gtrandchild) ได้ในลักษณะเดียวกันเส้นทาง (path) จากโหนด n1 ไปยังโหนด nk ใดๆ จะเป็นลำดับของโหนด n1,n2,...,nkความยาว (length) ของเส้นทางจะเป็นจำนวนของเส้นเชื่อมที่อยู่ในเส้นทาง ซึ่งเท่ากับ k-1 เส้นทาง จากโหนดใดๆ ไปยังตัวเองจะมีความยาวเป็ยศูนย์ และในทรีแต่ละทรี จะมีเส้นทางหนึ่งเส้นเท่านั้นจากโหนดรากไปยัง โหนดใดๆ ความลึก (depth) เป็น ความยาวของเส้นทางจากโหนดรากไปยังโหนด n โซึ่งมีเส้นทางเดียวที่ไม่ซ้ำกัน) ความสูง (height) เป็น เส้นทางทีสุดจากโหนด n ไปยังโหนดใบถ้ามีเส้นทางจาดโหนด n1 ไปยังโหนด n2 จะเป็น บรรพบุรุษ (ancestor) ของ n2 และ n2 จะเป็น ลูกหลาน (descendant) ของ n1 ถ้า n1 != n2 ดังนั้น n1 จะเป็น บรรพบุรุษที่แท้จริง (proper ascestor) ของ n1 และ n2 ลูกหลานที่แท้จริง (proper descendant)
ทรีแบบลำดับ
ทรีแบบราก (rooted tree ) เป็นทรีที่สามารถวาดได้อิสระ โดยเชื่อมโหนดในระดับต่ำลงไป และมีโหนด ใบอยู่ในระดับล่าง มีโครงสร้างไม่เหมาะสมก่การใช้งาน เนื่องจากวิธีการเรียกชื่อโหนดจากลำดับซ้ายไปขวา "ทรีแบบลำดับ (ordered tree)" คือ ทรีแบบรากที่โหนดลูกของแต่ละโหนดถูกกำหนดลำดับดังรูป ถ้าต้องการจะใช้ทรีแบบลำดับเป็นโครงสร้างข้อมูล ในแต่ละโหนดจะต้องมีจำนวนเขตข้อมูลมากพอๆ กับจำนวน ของโหนดนั้น ดังนั้นถ้ามีบางโหนดในทรีมีจำนวนทรีมากกว่า 10 ทรีย่อย จะต้องมีเขตข้อมูลสำหรับลิงค์ของ แต่ละโหนดถึง 10 เขต ซึ่งแต่ละเขตลิงค์ต่างๆ เหล่านี้ส่วนใหญ่จะมีค่าเป็น NULL ซึ่งทำให้เนื้อที่จำนวนมากไม่ได้ใช้งาน

DTS 07-05/08/2552

สรุป
Queue เป็น List แบบเชิงเส้น (Linear Data Structure) เช่นเดียวกับ Stack แต่มีความแตกต่างกันคือ Queue มีตัวชี้ 2 ตัว คือ
–หัว (Head)
–ท้าย (Tail)
• สำหรับในการนำข้อมูลเข้าและนำข้อมูลออกคือ เข้าท้าย (Tail) ของQueue และออกตรงหัว (Head) ของ Queue ซึ่ง Queue จึงมีลักษณะที่เรียกว่า เข้าก่อน ออกก่อน (First-In First-Out : FIFO)
คิว(queue) หรือแถวคอย เป็นประเภทข้อมูลอย่างย่อที่มีลักษณะการเรียงลำดับข้อมูล ในการเข้า-ออกในลักษณะเข้าก่อนออกก่อน FIFO (First In First Out) กล่าวคือข้อมูลที่เข้าแรกๆจะได้ออกก่อน คล้ายคนต่อคิวที่มาก่อนจะได้ซื้อของก่อน จึงเรียกว่า แถวคอย หรือ คิว
แถวคอย หรือ คิว จึงจัดเป็นวิธีการจัดการเข้า-ออกของข้อมูลอีกแบบหนึ่ง เป็นโครงสร้างข้อมูลที่นำมาใช้ในการทำงานของโปรแกรมคอมพิวเตอร์หลายประการ อาทิการเข้าคิวในการทำงานของเครือข่าย การออกแบบการทำงานระบบท่อ (pipeline) เป็นต้น
จุดเด่นของคิว
คิวสามารถจัดการการเข้า-ออกของข้อมูล ใช้เก็บข้อมูลที่ต้องการจัดเรียงเป็นระบบ โดยพิจารณาข้อมูลตามลำดับ ในทำนอง ใครถึงก่อนมีสิทธิ์ได้ใช้ก่อน จึงใช้ในการเรียงลำดับในการแบ่งปันทรัพยากรที่มีอยู่จำกัดในการทำงาน เช่น การรอคิวการทำงานของเครื่องพิมพ์ในสำนักงาน เป็นต้น
วิธีการสร้างคิว
การสร้างคิวทำได้โดยแถวลำดับประกอบกับจำนวนเต็ม ที่เก็บดัชนีของหัวคิวและท้ายคิว สองตัว หรือใช้ รายการโยงสองชั้นวน(circular doubly linked list)
คิวแถวลำดับ
สำหรับการใช้แถวลำดับในการทำคิวนั้น (array queue) ตอนเริ่มต้นเราจะให้ดัชนีของหัวคิวและท้ายคิวชี้ที่ศูนย์ เมื่อเข้าคิว (enqueue) ก็จะเก็บข้อมูลตรงดัชนีท้าย พร้อมทั้งเพิ่มค่าดัชนีท้ายคิวจะไปอีกหนึ่ง (increament) ในทางตรงกันข้ามหากเอาข้อมูลตัวแรกออกจากคิว (dequeue) ก็คืนค่าสมาชิกตัวที่ดัชนีหัวคิวชี้อยู่พร้อมทั้งเพิ่มค่าดัชนีหัวคิวไปอีกหนึ่ง (decrement) หากดัชนีหัวคิววิ่งไล่ทับดัชนีท้ายคิวแสดงว่า คิวนั้นเป็นคิวว่าง (empty queue) ไม่ควร dequeue อีกเพราะจะทำให้การทำงานรวนได้ (ควรตรวจสอบก่อน dequeue)เนื่องจากแถวลำดับมีขนาดจำกัดในบางครั้งอาจมีการทำคิววนรอบ (circular array queue) กล่าวคือบางครั้งคิวอาจมีการ enqueue และ dequeue สลับกันทำให้ดัชนีหัวคิวเลื่อนๆออกไปจนจะตกขอบขวาของแถวลำดับ ทำให้มีเนื้อที่ของแถวลำดับด้านหน้าเหลือไม่ได้ใช้จึงมีการวนเอาหางคิว มาแทนส่วนหน้าของแถวลำดับ กล่าวคือเมื่อท้ายคิวตกขอบขวาของแถวลำดับ ก็จะมีการเริ่มดัชนีท้ายคิวที่ศูนย์ใหม่และต่อท้ายคิวมาเรื่อยๆ ข้อด้อยของวิธีนี้คือ เมื่อท้ายคิวมาทับหัวคิวอีกครั้งจะตีความไม่ได้ว่าคิวเต็มแถวลำดับ หรือคิวว่างกันแน่ จึงอาจใช้ตัวแปรขนาด (size) หรือตัวแปรอื่นๆช่วยในการบอกว่าคิวว่างหรือไม่
คิวรายการโยงสองชั้นวน
สำหรับการใช้รายการโยงสองชั้นวน(circular doubly linked list) ในการทำนั้น โดยหัวคิวจะอยู่ที่ปมสุดท้ายนี้ (กล่าวคือเป็นปมก่อนที่จะชี้ปมหัว เพราะว่าเป็นรายการวน) ส่วนท้ายคิวอยู่ที่ปมแรก เมื่อเข้าคิว (enqueue) ก็เพิ่มปมใหม่หลังปมหัว เมื่อจะเอาข้อมูลแรกออกจากคิว (dequeue) ก็จะเอาข้อมูลก่อนปมหัวออก ก็คือข้อมูลที่เข้าแรกๆสุด เมื่อใดที่รายการหรือคิวว่าง ก็คือตอนที่ปมหัวชี้มาที่ตัวเองนั่นเอง

Queue Operation
การดำเนินการพื้นฐานของคิวมี 4 ขั้นตอน
1. Enqueue การนำข้อมูลเก็บเข้าไปในคิว
2. Dequeue การนำข้อมูลออกจากคิว
3. Queue Front ข้อมูลที่ตรียมจะออกจากคิว (สมาชิกตัวแรกที่จะออกจากคิว)
4. Queue Rear ข้อมูลที่เพิ่งจะเข้ามาในคิว (สมาชิกที่เข้ามาในคิวตัวสุดท้าย)

ตัวอย่างการใช้
1. คนเข้าคิวซื้อตั๋วหนัง
2. นักศึกษาเข้าคิวเพื่อรับบริการในธนาคาร
3. นักศึกษาเข้าคิวซื้ออาหาร
4. ลูกค้าเข้าคิวจ่ายเงินที่เค้าเตอร์

02 สิงหาคม, 2552

DTS 06-29/07/2552

สรุป
ลำดับการทำงานของตัวดำเนินการทางคณิตศาสตร์ (Operator Priority)
มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง ดังนี้
1.ทำในเครื่องหมายวงเล็บ
2.เครื่องหมายยกกำลัง ( ^ )
3.เครื่องหมายคูณ ( * ) , หาร ( / )
4.เครื่องหมายบวก ( + ) , ลบ ( - )

อัลกอริทึมการแปลงนิพจน์ Infix เป็น นิพจน์ Postfix
เราสามารถแปลงนิพจน์ Infix ให้เป็น Postfix ได้โดยอาศัยสแตคที่มีคุณสมบัติการเข้าหลังออกก่อนหรือ LIFO โดยมีอัลกอริทึมในการแปลงนิพจน์ ดังนี้
1. ถ้าข้อมูลเข้า (input) เป็นตัวถูกดำเนินการ (operand) ให้นำออกไปเป็นผลลัพธ์ (output)
2. ถ้าข้อมูลเข้าเป็นตัวดำเนินการ (operator) ให้ดำเนินการดังนี้
2.1 ถ้าสแตคว่าง ให้ push operator ลงในสแตค
2.2 ถ้าสแตคไม่ว่าง ให้เปรียบเทียบ operator ที่เข้ามากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค
2.2.1 ถ้า operator ที่เข้ามามีความสำคัญมากกว่า operator ที่ตำแหน่ง TOP ของสแตคให้ push ลงสแตค2.2.2 ถ้า operator ที่เข้ามามีความสำคัญน้อยกว่าหรือเท่ากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค ให้ pop สแตคออกไปเป็นผลลัพธ์ แล้วทำการเปรียบเทียบ operator ที่เข้ามากับ operator ที่ตำแหน่ง TOP ต่อไป จะหยุดจนกว่า operator ที่เข้ามาจะมีความสำคัญมากกว่า operator ที่ตำแหน่ง TOP ของสแตค แล้วจึง push operator ที่เข้ามานั้นลงสแตค
3. ถ้าข้อมูลเข้าเป็นวงเล็บเปิด ให้ push ลงสแตค
4. ถ้าข้อมูลเข้าเป็นวงเล็บปิด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์จนกว่าจะถึงวงเล็บ เปิด จากนั้นทิ้งวงเล็บเปิดและปิดทิ้งไป
5. ถ้าข้อมูลเข้าหมด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์จนกว่าสแตคจะว่าง


ตัวอย่าง การแปลงนิพจน์ Infix เป็นนิพจน์ Postfix


นิพจน์ A / B + (C – D)