Introduction to Graph theory Part 2 : Graph Coloring



Graph Coloring


Graph coloring หรือบางที่เรียก vertex coloring เป็นการให้สีหรือติดป้าย (labeling) แก่ vertices โดยที่ vertices ทุกคู่ที่เชื่อมต่อกัน (adjacent vertices) จะต้องไม่มีสีเดียวกัน


1. เมื่อกระบวนการ coloring เสร็จสิ้นลง ถ้าจำนวนสีที่ใช้เป็น k จะเรียกว่า k-coloring เช่น 2-coloring, 3-coloring

2. ค่า \( k \) ที่น้อยที่สุดเรียกว่า chromatic number ของ graph นั้นๆ


รูปที่ 1

ตัวอย่าง graph ในรูปที่ 1 เรียกว่าเป็น colored properly graph มีค่า \( k =5 \) แต่ค่านี้อาจยังไม่ใช่ chromatic number ก็ได้


มีการประยุกต์ใช้งาน graph coloring ในหลายด้าน เช่น การจัดตารางเวลาทำงาน (Scheduling) , Time table, Sudoku,Conflick resolution ฯลฯ ตัวอย่างงานที่เป็นที่รู้จักกันคือการให้สีแผนที่ด้วย four colors theorem ซึ่งพิสูจน์ว่าที่ใช้สีเพียง 4 สีก็เพียงพอสำหรับการให้สีทุกพื้นที่ในแผนที่โดยที่พื้นที่ที่ติดกันจะไม่ใช้สีเดียวกัน (รูปที่ 2)


รูปที่ 2


การหาค่า Chromatic Number


ถ้ากำหนด graph มาใช้ตามรูปที่ 3 วิธีการง่ายที่สุดในการให้สีคือให้สีแต่ละ vertice แยกกันไป จะใช้จำนวนสีทั้งหมด 5 สี แต่วิธีการนี้ไม่ใช่การหาค่า chromatic number เพราะ 5 อาจไม่ใช่ค่าที่น้อยที่สุด ในตอนนี้จะยกตัวอย่างวิธีการหาค่า chromatic number ด้วย backtracking algorithm ซึ่งมีขั้นตอนดังนี้


รูปที่ 3

1. เริ่มต้นด้วย กำหนดให้สี node ใด node หนึ่งในที่นี้ให้เป็น A ด้วยสี CL1 (ใช้อักษรแทน ยังไม่ต้องกำหนดสีจริง) ในขณะนี้ chromatic number = 1

2. ไปยัง node ที่เชื่อมกับ A ซึ่งคือ B และ C เลือก B มาพิจารณาก่อน ให้สีแก่ B แต่ต้องไม่ซ้ำกับ A ดังนั้นให้ค่าสีของ B เป็น CL2 ในขณะนี้ chromatic number = 2

3. ไปยัง node ถัดไปคือ C ที่เชื่อมกับ A แต่ไม่เชื่อมกับ B ดังนั้น C จะให้ค่าสี CL1 (ซ้ำกับ A) เพื่อให้ได้ chromatic number เป็นมีค่าน้อยที่สุด จึงเลือกสีที่ใช้กับ node อื่นที่ไม่เชื่อมกับ C นั่นคือ CL2 ในขณะนี้ chromatic number ยังคงเป็น 2 เท่าเดิม


4. ไปยัง node ถัดไปคือ D ที่เชื่อมกับ B และ C แต่ไม่เชื่อมกับ A ดังนั้นใช้หลักการเดียวกับข้อ 3 คือไม่ใช้สีเดียวกับ B และ C แต่ใช้สี CL1 ซ้ำกับ A ได้ เพื่อให้ได้ chromatic number เป็นมีค่าน้อยที่สุด ในขณะนี้ chromatic number ยังคงเป็น 2 เท่าเดิม


5. ไปยัง node สุดท้ายคือ D ที่เชื่อมกับ D จึงให้ค่าสี CL1 (ซ้ำกับ A,D)ไม่ได้ เพื่อให้ได้ chromatic number เป็นมีค่าน้อยที่สุด จึงเลือกสีที่ใช้กับ node อื่นที่ไม่เชื่อม นั่นคือ CL2


สุดท้ายก็สามารถให้ค่าสีได้ครบทุก node โดยยังทำให้ค่า chromatic number น้อยที่สุดคือ 2 ไม่ใช่ 5 ตามแบบวิธี naive ถ้ากำหนดให้ CL1 เป็นสีฟ้าและ CL2 เป็นสีเขียว ผลที่ได้จะแสดงในรูปที่ 4


รูปที่ 4

ตัวอย่างการประยุกต์ใช้


การนำไปใช้ในการจัดตารางเวลา สมมุติมีนักศึกษาแผนก A,B,C,D และ E มีวิชาที่ต้องเรียนวิชา Physics, Microprocessor, Operating system, Calculus และ Electronics แยกตามสาขาตามตารางที่ 1 ตามที่แสดงเป็นจุดสีเขียว


ตารางที่ 1

จากตารางจะเห็นว่าทุกวิชาที่นักศึกษาลงทะเบียนมากกว่า 1 สาขา ดังนั้นการจัดตารางเวลาสอบจะต้องไม่ทำให้เกิดปัญหาว่านักศึกษาต้องสอบมากกว่า 1 วิชาในเวลาเดียวกัน

ในการแก้ปัญหานี้ สามารถใช้หลักการของ graph coloring มาช่วยแก้ได้ ดังนี้

1. สร้าง graph ของรายวิชาที่ต้องเรียน แยกตามสาขา โดยใช้ vertices แทนรายวิชา และ edges แทนความสัมพันธ์ว่ารายวิชาว่านั้นต้องเรียนในสาขาเดียวกัน


2. รวม graph ทั้งหมดให้เป็น graph เดียว


3. ใช้ขั้นตอนการทำงาน backtracking algorithm


จะได้ chromatic number 3 ถ้าแทนสีแต่ละสีด้วยวันที่ก็จะได้ว่าการจัดสอบตัองจัด 3 วัน โดย

⊕ Microprocessor และ Operating system สอบในวันเดียวกัน

⊕ Calculus และ Physics สอบในวันเดียวกัน

⊕ Electronics สอบวันอื่น

ความคิดเห็น