Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Thai Scrabble PowerPoint Presentation
Download Presentation
Thai Scrabble

Thai Scrabble

130 Vues Download Presentation
Télécharger la présentation

Thai Scrabble

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Thai Scrabble โดย นายนฤพนธ์ เจริญพืช รหัส 44032443 วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 1

  2. หัวข้อนำเสนอ • รายละเอียดโครงงาน • วัตถุประสงค์ของโครงงาน • ขอบเขตของโครงงาน • การดำเนินงาน • ผลการดำเนินงาน • สรุปผลการดำเนินงาน 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 2

  3. รายละเอียดโครงงาน Scrabble หรือ เกมส์ต่อคำศัพท์เป็นการที่ให้ผู้เล่นนั้นต่อคำศัพท์จากตัวอักษรที่ตนเองมีอยู่ ลงบนกระดานและนับคะแนน โดยส่วนใหญ่จะมีผู้เล่นประมาณ 2-4 คน แต่สำหรับ Thai Scrabble นี้ เป็นเกมส์ต่อคำศัพท์ที่เป็นการโต้ตอบกันระหว่างผู้เล่น 2 ฝ่าย คือ ผู้เล่นที่เป็นมนุษย์ และผู้เล่นที่เป็นคอมพิวเตอร์ โดยคอมพิวเตอร์นั้นจะต้องสามารถคำนวณหาคำศัพท์ที่สามารจะต่อได้ และพิจารณาคำศัพท์ที่เหมาะสมที่สุดที่จะต่อ โดยใช้ทฤษฎีต่างๆ มาช่วยในการพิจารณา ดังเช่น Monte Carlo, Minimax Searching, Heuristic 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 3

  4. วัตถุประสงค์ของโครงงานวัตถุประสงค์ของโครงงาน 1.เพื่อสร้างพื้นฐานและความเข้าใจทางด้านปัญญาประดิษฐ์ 2.เพื่อศึกษาทฤษฎีและการทำงานของ Heuristic และ Minimax Searching ซึ่งเป็นส่วนหนึ่งของปัญญาประดิษฐ์ 3. นำความรู้ที่ได้ไปพัฒนาและศึกษาต่อในงานทางด้านปัญญา ประดิษฐ์ 4. เพื่อทำให้คอมพิวเตอร์สามารถคิดคำศัพท์เพื่อโต้ตอบกับผู้เล่นได้ 5. เพื่อสร้างเกมส์ที่เป็นประโยชน์และสร้างความสนุกสนาน 6. เพื่อส่งเสริมและฝึกการใช้คำภาษาไทย 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 4

  5. ขอบเขตของโครงงาน 1. คอมพิวเตอร์สามารถคำนวณหาคำศัพท์ที่จะต่อได้ตามรูปแบบ ของเกมส์ 2. พจนานุกรมที่ใช้เป็นฐานข้อมูลจากโปรแกรม Lexitron ซึ่งเป็น โปรแกรมแปลคำศัพท์ไทย-อังกฤษและอังกฤษ-ไทยดังนั้นคำ บางคำอาจจะไม่ตรงกับพจนานุกรมที่ใช้กันทั่วไปแต่สามารถ พัฒนาให้อ้างอิงจากพจนานุกรมต่างๆที่ต้องการได้ 3. ภาพกราฟิกเป็นแบบ 2 มิติ 4. โปรแกรมที่พัฒนาขึ้นนี้เป็นการพัฒนาเพื่อเน้นในด้านปัญญา ประดิษฐ์ เพื่อให้คอมพิวเตอร์สามารถคิดคำศัพท์โต้ตอบกับมนุษย์ 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 5

  6. การดำเนินงาน โปรแกรมจะแบ่งออกเป็น 2 ส่วนคือ 1.พจนานุกรม 2.ตัวเกมส์ โดยในส่วนของพจนานุกรมจะจัดการเกี่ยวกับคำศัพท์เช่นการค้นหาคำศัพท์จากตัวอักษรที่กำหนดหรือใช้ในการค้นหาคำศัพท์ว่ามีอยู่ในพจนานุกรมหรือไม่โดยในส่วนของพจนานุกรมนี้ได้เลือกใช้ Ternary Search Trees ในการจัดการเนื่องจากมีการทำงานที่รวดเร็วและสามารถค้นหาคำศัพท์โดยมีอินพุทเป็นตัวอักษรที่อยู่ในคำนั้นบางตัวได้และในส่วนของฐานข้อมูลทางผู้พัฒนาเลือกใช้ฐานข้อมูล Lexitron ของทางศูนย์เทคโนโลยีอิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติหรือเนคเทคในการพัฒนา 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 6

  7. การดำเนินงาน(ต่อ) Ternary Search Trees • คือการรวมคุณสมบัติของ binary search trees และ digital search tries โดยจะดำเนินการกับตัวอักษรไปทีละตัว ซึ่งเป็นลักษณะของ tries และใช้พื้นที่อย่างมีประสิทธิภาพอย่างเช่น binary search tree โดยแต่ละโหนดจะมีลูกทั้งหมด 3 ตัว ซึ่งจะดีกว่า binary search tree ที่มีแค่ 2 ตัว • -lokid หมายถึงโหนดลูกทางซ้าย • - eqkid หมายถึงโหนดลูกตรงกลาง • - hikid หมายถึงโหนดลูกทางขวา • โดยเมื่อเปรียบเทียบกับค่าของโหนดปัจจุบันแล้วมีค่าน้อยกว่าจะเลื่อนโหนดลงไปยังโหนดลูกทางซ้าย (lokid) ถ้ามากกว่าจะเลื่อนโหนดลงไปยังโหนดลูกทางขวา (hiked) แต่ถ้าเท่ากันจะเลื่อนลงไปยังโหนดตรงกลาง (eqkid) และจะเป็นการเปรียบเทียบทีละตัวอักษรไม่ใช่ทั้งคำหรือทั้งสติงค์เหมือน Binary Search Tree 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 7

  8. การดำเนินงาน(ต่อ) Data Structure typedef struct tnode *Tptr; typedef struct tnode { char splitchar; Tptr lokid, eqkid, hikid; }Tnode; 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 8

  9. i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) การค้นหานั้นจะเปรียบเทียบค่าระหว่างตัวอักษรปัจจุบันของ string ที่ต้องการหากับตัวอักษรในโหนดนั้น ถ้าตัวอักษรที่ต้องการหามีค่าน้อยกว่าจะเลื่อนไปยังโหนดลูกทางซ้าย ถ้าตัวอักษรที่ต้องการหามีค่ามากกว่าจะเลื่อนไปยังโหนดลูกทางขวา แต่ถ้ามีค่าเท่ากันจะเลื่อนลงไปยังโหนดลูกตรงกลางและเลื่อนตัวอักษรที่ต้องการเป็นตัวถัดไป 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 9

  10. การดำเนินงาน(ต่อ) สมมติว่าต้องการค้นหาคำว่า “by” จะเริ่มต้นที่ root ซึ่งคือตัว “i”ดังนั้นเมื่อเปรียบเทียบแล้วจะเลื่อนลงมายังโหนดลูกทางซ้าย เพราะค่า “b”มีค่าน้อยกว่าค่า “i” i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 10

  11. การดำเนินงาน(ต่อ) เมื่อเลื่อนลงมาแล้วก็จะเปรียบเทียบกับตัวอักษรของโหนดนั้น ในที่นี้เปรียบเทียบแล้วมีค่าเท่ากันจะเลื่อนลงมาโหนดลูกตรงกลาง และเลื่อนสติงค์เป็นตัวถัดไป คือตัว “y” i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 11

  12. การดำเนินงาน(ต่อ) เมื่อเลื่อนลงมาแล้วก็จะเปรียบเทียบ“y”กับตัวอักษรของโหนดนั้น ในที่นี้เปรียบเทียบแล้วมีค่ามากกว่าจะเลื่อนลงมาโหนดลูกทางขวา i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 12

  13. การดำเนินงาน(ต่อ) เมื่อถึงจุดนี้ก็จะสรุปได้ว่า ใน Tree นี้มีคำว่า “by” อยู่ด้วย i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 13

  14. i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) Membership Searching String = b y s int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 14

  15. i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) Membership Searching String = b y s int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 15

  16. i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) Membership Searching String = b y s int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 16

  17. i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) Membership Searching String = b y s int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 17

  18. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 18

  19. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } if(!p) return 0; 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 19

  20. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 20

  21. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 21

  22. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 22

  23. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 23

  24. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 24

  25. int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 25

  26. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } if(!p) return 0; 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 26

  27. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 27

  28. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 28

  29. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 29

  30. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 30

  31. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 31

  32. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 32

  33. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 33

  34. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 34

  35. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 35

  36. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 36

  37. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 37

  38. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 38

  39. การดำเนินงาน(ต่อ) Membership Searching i String = b y b s o s a e h n t n t s y e f r o t int rsearch(Tptr p, char *s) { if(!p) return 0; if(*s < p->splitchar) return rsearch(p->lokid, s); else if (*s > p->splitchar) return rsearch(p->hikid, s); else{ if (*s == 0) return 1; return rsearch(p->eqkid, ++s); } } 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 39

  40. i b s o a e h n t n t s y e f r o t Insert a new string String = m e s Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; }

  41. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } if (p == 0){

  42. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } if(*s < p->splitchar)

  43. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } else if(*s == p->splitchar){

  44. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } }else

  45. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } p->hikid = insert(p->hikid, s);

  46. Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; }

  47. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } if (p == 0){

  48. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } if (p == 0){ if(*s < p->splitchar)

  49. Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } if (p == 0){ p->lokid = insert(p->lokid, s);

  50. Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Insert a new string i b s o String = m e a e h n t n t s s y e f r o t Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; } Tptr insert(Tptr p, char *s) { if(p == 0){ p = (Tptr) malloc(sizeof(Tnode)); p->splitchar = *s; p->lokid = p->eqkid = p->hikid = 0; } if(*s < p->splitchar) p->lokid = insert(p->lokid, s); else if(*s == p->splitchar){ if(*s != 0) p->eqkid = insert(p->eqkid, ++s); }else p->hikid = insert(p->hikid, s); return p; }