<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="th">
	<id>https://theory.cpe.ku.ac.th/wiki/index.php?action=history&amp;feed=atom&amp;title=418531_%E0%B8%A0%E0%B8%B2%E0%B8%84%E0%B8%95%E0%B9%89%E0%B8%99_2552%2F%E0%B9%82%E0%B8%88%E0%B8%97%E0%B8%A2%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%9E%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B3%E0%B8%A5%E0%B8%B1%E0%B8%87%E0%B9%80%E0%B8%A2%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A2%E0%B8%96%E0%B8%B6%E0%B8%81%2F%E0%B9%80%E0%B8%89%E0%B8%A5%E0%B8%A2%E0%B8%82%E0%B9%89%E0%B8%AD_9</id>
	<title>418531 ภาคต้น 2552/โจทยปัญหาการค้นหาด้วยพละกำลังเยี่ยงควายถึก/เฉลยข้อ 9 - ประวัติรุ่นแก้ไข</title>
	<link rel="self" type="application/atom+xml" href="https://theory.cpe.ku.ac.th/wiki/index.php?action=history&amp;feed=atom&amp;title=418531_%E0%B8%A0%E0%B8%B2%E0%B8%84%E0%B8%95%E0%B9%89%E0%B8%99_2552%2F%E0%B9%82%E0%B8%88%E0%B8%97%E0%B8%A2%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%9E%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B3%E0%B8%A5%E0%B8%B1%E0%B8%87%E0%B9%80%E0%B8%A2%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A2%E0%B8%96%E0%B8%B6%E0%B8%81%2F%E0%B9%80%E0%B8%89%E0%B8%A5%E0%B8%A2%E0%B8%82%E0%B9%89%E0%B8%AD_9"/>
	<link rel="alternate" type="text/html" href="https://theory.cpe.ku.ac.th/wiki/index.php?title=418531_%E0%B8%A0%E0%B8%B2%E0%B8%84%E0%B8%95%E0%B9%89%E0%B8%99_2552/%E0%B9%82%E0%B8%88%E0%B8%97%E0%B8%A2%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%9E%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B3%E0%B8%A5%E0%B8%B1%E0%B8%87%E0%B9%80%E0%B8%A2%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A2%E0%B8%96%E0%B8%B6%E0%B8%81/%E0%B9%80%E0%B8%89%E0%B8%A5%E0%B8%A2%E0%B8%82%E0%B9%89%E0%B8%AD_9&amp;action=history"/>
	<updated>2026-04-11T18:45:27Z</updated>
	<subtitle>ประวัติรุ่นแก้ไขของหน้านี้ในวิกิ</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>https://theory.cpe.ku.ac.th/wiki/index.php?title=418531_%E0%B8%A0%E0%B8%B2%E0%B8%84%E0%B8%95%E0%B9%89%E0%B8%99_2552/%E0%B9%82%E0%B8%88%E0%B8%97%E0%B8%A2%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%9E%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B3%E0%B8%A5%E0%B8%B1%E0%B8%87%E0%B9%80%E0%B8%A2%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A2%E0%B8%96%E0%B8%B6%E0%B8%81/%E0%B9%80%E0%B8%89%E0%B8%A5%E0%B8%A2%E0%B8%82%E0%B9%89%E0%B8%AD_9&amp;diff=7038&amp;oldid=prev</id>
		<title>Cardcaptor: หน้าที่ถูกสร้างด้วย &#039;พิจารณาตารางข้างล่างนี้ &lt;table cellpadding=&quot;5&quot;&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;&lt;math&gt;a_{11} \,&lt;/mat…&#039;</title>
		<link rel="alternate" type="text/html" href="https://theory.cpe.ku.ac.th/wiki/index.php?title=418531_%E0%B8%A0%E0%B8%B2%E0%B8%84%E0%B8%95%E0%B9%89%E0%B8%99_2552/%E0%B9%82%E0%B8%88%E0%B8%97%E0%B8%A2%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%9E%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B3%E0%B8%A5%E0%B8%B1%E0%B8%87%E0%B9%80%E0%B8%A2%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A2%E0%B8%96%E0%B8%B6%E0%B8%81/%E0%B9%80%E0%B8%89%E0%B8%A5%E0%B8%A2%E0%B8%82%E0%B9%89%E0%B8%AD_9&amp;diff=7038&amp;oldid=prev"/>
		<updated>2009-08-28T18:35:14Z</updated>

		<summary type="html">&lt;p&gt;หน้าที่ถูกสร้างด้วย &amp;#039;พิจารณาตารางข้างล่างนี้ &amp;lt;table cellpadding=&amp;quot;5&amp;quot;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{11} \,&amp;lt;/mat…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;หน้าใหม่&lt;/b&gt;&lt;/p&gt;&lt;div&gt;พิจารณาตารางข้างล่างนี้&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{11} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{12} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{13} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{21} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{22} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{23} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{31} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{32} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;a_{33} \,&amp;lt;/math&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
คะแนนของตารางนี้คือ &amp;lt;math&amp;gt;\sum_{i=1}^3 \sum_{j=1}^2 (a_{ij} - a_{i(j+1)})^2 + \sum_{i=1}^2 \sum_{j=1}^3 (a_{ij} - a_{(i+1)j})^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
เราเห็นได้ว่าคะแนนของตารางแบ่งออกเป็นสองส่วน คือ&lt;br /&gt;
* คะแนนตามแนวนอน: &amp;lt;math&amp;gt;\sum_{i=1}^3 \sum_{j=1}^2 (a_{ij} - a_{i(j+1)})^2&amp;lt;/math&amp;gt; และ&lt;br /&gt;
* คะแนนตามแนวตั้ง: &amp;lt;math&amp;gt;\sum_{i=1}^2 \sum_{j=1}^3 (a_{ij} - a_{(i+1)j})^2&amp;lt;/math&amp;gt;&lt;br /&gt;
และนอกจากนี้เรายังสังเกตเพิ่มเติมได้อีกว่า&lt;br /&gt;
* การสลับแถวจะไม่ทำให้คะแนนแนวนอนเปลี่ยน&lt;br /&gt;
* การสลับคอลัมน์จะไม่ทำให้คะแนนแนวตั้งเปลี่ยน&lt;br /&gt;
&lt;br /&gt;
ฉะนั้น เราจึงสามารถแก้ปัญหาในโจทย์ได้โดยการแบ่งอัลกอริทึมออกเป็นสองขั้นตอนดังนี้&lt;br /&gt;
* หาวิธีการสลับคอลัมน์ ให้ได้คะแนนแนวนอนมากที่สุด (โดยไม่ต้องสนใจคะแนนแนวตั้ง)&lt;br /&gt;
* หาวิธีการสลับแถว ให้ได้คะแนนแนวตั้งมากที่สุด (โดยไม่่ต้องสนใจคะแนนแนวนอน)&lt;br /&gt;
เมื่อเรานำเอาคะแนนแต่ละแนวที่มากที่สุดมาบวกกัน เราจะได้คะแนนของตารางที่มากที่สุดเท่าที่จะเป็นไปได้&lt;br /&gt;
&lt;br /&gt;
ฉะนั้น ต่อไปนี้เราจะพูดถึงอัลกอริทึมสำหรับหาวิธีการสลับคอลัมน์ให้ได้คะแนนแนวนอนมากที่สุดเท่านั้น อัลกอริทึมสำหรับหาคะแนนแนวตั้งที่มากที่สุดก็มีลักษณะเช่นเดียวกัน&lt;br /&gt;
&lt;br /&gt;
=== วัตถุ ===&lt;br /&gt;
เราสามารถแทนวิธีการสลับคอลัมน์ด้วย permutation บนเซต &amp;lt;math&amp;gt;\{ 1, 2, \ldots, n \} \,&amp;lt;/math&amp;gt; ซึ่งในชั้นเรียนเราเก็บ permutation ในอะเรย์ &amp;lt;math&amp;gt;p[1 \ldots n]&amp;lt;/math&amp;gt; ขนาด &amp;lt;math&amp;gt;n \,&amp;lt;/math&amp;gt; ช่อง สำหรับปัญหานี้เราจะตีความหมายของ permutation ที่เก็บในอะเรย์ &amp;lt;math&amp;gt;p \,&amp;lt;/math&amp;gt; ดังต่อไปนี้:&lt;br /&gt;
: ถ้า &amp;lt;math&amp;gt;p[i] = j \,&amp;lt;/math&amp;gt; แล้ว คอลัมน์ที่ &amp;lt;math&amp;gt;i \,&amp;lt;/math&amp;gt; ของตารางที่สลับคอลัมน์แล้ว คือคอลัมน์ที่ &amp;lt;math&amp;gt;j \,&amp;lt;/math&amp;gt; ของตารางต้นฉบับ&lt;br /&gt;
&lt;br /&gt;
=== ค่าของวัตถุ === &lt;br /&gt;
สมมติให้ตารางต้นฉบับเก็บอยู่ในอะเรย์ &amp;lt;math&amp;gt;T[1 \ldots n, 1 \ldots n] \,&amp;lt;/math&amp;gt; เราสามารถเขียนฟังก์ชัน points เพื่อคำนวณคะแนนของตารางที่สลับแล้วได้ดังต่อไปนี้&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
points(T, p, n)&lt;br /&gt;
{&lt;br /&gt;
    result = 0&lt;br /&gt;
    for i = 1 to n do&lt;br /&gt;
        for j = 1 to n-1 do&lt;br /&gt;
        {&lt;br /&gt;
            d = T[ i, p[j] ] - T[ i, p[j+1] ]&lt;br /&gt;
            result = result + d*d&lt;br /&gt;
        }&lt;br /&gt;
    return result&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
เราได้ว่าฟังก์ชัน &amp;lt;code&amp;gt;points&amp;lt;/code&amp;gt; ทำงานในเวลา &amp;lt;math&amp;gt;O(n(n-1)) = O(n^2) \,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== อัลกอริทึม ===&lt;br /&gt;
เราจะสร้าง permutation ขึ้นมาทีละตัว แล้วสำหรับ permutation แต่ละตัวเราจะเรียกฟังก์ชัน &amp;lt;code&amp;gt;points&amp;lt;/code&amp;gt; เพื่อคำนวณคะแนนแนวนอนของตารางหลังจากสลับคอลัมน์ตาม permutation นั้น แล้วจึงนำค่าที่ได้ไปเปรียบเทียบกับค่าที่ต่ำที่สุดที่เคยเจอมา&lt;br /&gt;
&lt;br /&gt;
เนื่องจากมี permutation อยู่ทั้งหมด &amp;lt;math&amp;gt;n! \,&amp;lt;/math&amp;gt; ตัว และสำหรับแต่ละตัวเราใช้เวลาในการหาค่าของมันเท่ากับ &amp;lt;math&amp;gt;O(n^2) \,&amp;lt;/math&amp;gt; อัลกอริทึมของเราจึงทำงานในเวลา &amp;lt;math&amp;gt;O(n^2 n!) \,&amp;lt;/math&amp;gt; ตามต้องการ&lt;/div&gt;</summary>
		<author><name>Cardcaptor</name></author>
		
	</entry>
</feed>