870 likes | 1.02k Views
Thai Scrabble. โดย นายนฤพนธ์ เจริญพืช รหัส 44032443 วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา. 30 / 03 / 05 วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 1. หัวข้อนำเสนอ. รายละเอียดโครงงาน วัตถุประสงค์ของโครงงาน ขอบเขตของโครงงาน การดำเนินงาน ผลการดำเนินงาน
E N D
Thai Scrabble โดย นายนฤพนธ์ เจริญพืช รหัส 44032443 วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 1
หัวข้อนำเสนอ • รายละเอียดโครงงาน • วัตถุประสงค์ของโครงงาน • ขอบเขตของโครงงาน • การดำเนินงาน • ผลการดำเนินงาน • สรุปผลการดำเนินงาน 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 2
รายละเอียดโครงงาน Scrabble หรือ เกมส์ต่อคำศัพท์เป็นการที่ให้ผู้เล่นนั้นต่อคำศัพท์จากตัวอักษรที่ตนเองมีอยู่ ลงบนกระดานและนับคะแนน โดยส่วนใหญ่จะมีผู้เล่นประมาณ 2-4 คน แต่สำหรับ Thai Scrabble นี้ เป็นเกมส์ต่อคำศัพท์ที่เป็นการโต้ตอบกันระหว่างผู้เล่น 2 ฝ่าย คือ ผู้เล่นที่เป็นมนุษย์ และผู้เล่นที่เป็นคอมพิวเตอร์ โดยคอมพิวเตอร์นั้นจะต้องสามารถคำนวณหาคำศัพท์ที่สามารจะต่อได้ และพิจารณาคำศัพท์ที่เหมาะสมที่สุดที่จะต่อ โดยใช้ทฤษฎีต่างๆ มาช่วยในการพิจารณา ดังเช่น Monte Carlo, Minimax Searching, Heuristic 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 3
วัตถุประสงค์ของโครงงานวัตถุประสงค์ของโครงงาน 1.เพื่อสร้างพื้นฐานและความเข้าใจทางด้านปัญญาประดิษฐ์ 2.เพื่อศึกษาทฤษฎีและการทำงานของ Heuristic และ Minimax Searching ซึ่งเป็นส่วนหนึ่งของปัญญาประดิษฐ์ 3. นำความรู้ที่ได้ไปพัฒนาและศึกษาต่อในงานทางด้านปัญญา ประดิษฐ์ 4. เพื่อทำให้คอมพิวเตอร์สามารถคิดคำศัพท์เพื่อโต้ตอบกับผู้เล่นได้ 5. เพื่อสร้างเกมส์ที่เป็นประโยชน์และสร้างความสนุกสนาน 6. เพื่อส่งเสริมและฝึกการใช้คำภาษาไทย 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 4
ขอบเขตของโครงงาน 1. คอมพิวเตอร์สามารถคำนวณหาคำศัพท์ที่จะต่อได้ตามรูปแบบ ของเกมส์ 2. พจนานุกรมที่ใช้เป็นฐานข้อมูลจากโปรแกรม Lexitron ซึ่งเป็น โปรแกรมแปลคำศัพท์ไทย-อังกฤษและอังกฤษ-ไทยดังนั้นคำ บางคำอาจจะไม่ตรงกับพจนานุกรมที่ใช้กันทั่วไปแต่สามารถ พัฒนาให้อ้างอิงจากพจนานุกรมต่างๆที่ต้องการได้ 3. ภาพกราฟิกเป็นแบบ 2 มิติ 4. โปรแกรมที่พัฒนาขึ้นนี้เป็นการพัฒนาเพื่อเน้นในด้านปัญญา ประดิษฐ์ เพื่อให้คอมพิวเตอร์สามารถคิดคำศัพท์โต้ตอบกับมนุษย์ 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 5
การดำเนินงาน โปรแกรมจะแบ่งออกเป็น 2 ส่วนคือ 1.พจนานุกรม 2.ตัวเกมส์ โดยในส่วนของพจนานุกรมจะจัดการเกี่ยวกับคำศัพท์เช่นการค้นหาคำศัพท์จากตัวอักษรที่กำหนดหรือใช้ในการค้นหาคำศัพท์ว่ามีอยู่ในพจนานุกรมหรือไม่โดยในส่วนของพจนานุกรมนี้ได้เลือกใช้ Ternary Search Trees ในการจัดการเนื่องจากมีการทำงานที่รวดเร็วและสามารถค้นหาคำศัพท์โดยมีอินพุทเป็นตัวอักษรที่อยู่ในคำนั้นบางตัวได้และในส่วนของฐานข้อมูลทางผู้พัฒนาเลือกใช้ฐานข้อมูล Lexitron ของทางศูนย์เทคโนโลยีอิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติหรือเนคเทคในการพัฒนา 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 6
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) Data Structure typedef struct tnode *Tptr; typedef struct tnode { char splitchar; Tptr lokid, eqkid, hikid; }Tnode; 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 8
i b s o a e h n t n t s y e f r o t การดำเนินงาน(ต่อ) การค้นหานั้นจะเปรียบเทียบค่าระหว่างตัวอักษรปัจจุบันของ string ที่ต้องการหากับตัวอักษรในโหนดนั้น ถ้าตัวอักษรที่ต้องการหามีค่าน้อยกว่าจะเลื่อนไปยังโหนดลูกทางซ้าย ถ้าตัวอักษรที่ต้องการหามีค่ามากกว่าจะเลื่อนไปยังโหนดลูกทางขวา แต่ถ้ามีค่าเท่ากันจะเลื่อนลงไปยังโหนดลูกตรงกลางและเลื่อนตัวอักษรที่ต้องการเป็นตัวถัดไป 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 9
การดำเนินงาน(ต่อ) สมมติว่าต้องการค้นหาคำว่า “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
การดำเนินงาน(ต่อ) เมื่อเลื่อนลงมาแล้วก็จะเปรียบเทียบกับตัวอักษรของโหนดนั้น ในที่นี้เปรียบเทียบแล้วมีค่าเท่ากันจะเลื่อนลงมาโหนดลูกตรงกลาง และเลื่อนสติงค์เป็นตัวถัดไป คือตัว “y” i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 11
การดำเนินงาน(ต่อ) เมื่อเลื่อนลงมาแล้วก็จะเปรียบเทียบ“y”กับตัวอักษรของโหนดนั้น ในที่นี้เปรียบเทียบแล้วมีค่ามากกว่าจะเลื่อนลงมาโหนดลูกทางขวา i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 12
การดำเนินงาน(ต่อ) เมื่อถึงจุดนี้ก็จะสรุปได้ว่า ใน Tree นี้มีคำว่า “by” อยู่ด้วย i b s o a e h n t n t s y e f r o t 30/03/05วิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา 13
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
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
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
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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
การดำเนินงาน(ต่อ) 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
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; }
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){
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)
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){
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
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);
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; }
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){
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)
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);
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; }