Sparse Linear Programming
ให้ปัญหาของ sparse linear programming เขียนอยู่ในรูป
\[
\begin{array}{ll}
\left\{
\begin{array}{l}
\mbox{maximize} \\
\mbox{minimize}
\end{array}
\right\} &
f(\mathbf{x})=\mathbf{c}^T\mathbf{x} \\
\mbox{ภายใต้เงื่อนไข} &
\mathbf{A}\mathbf{x}
\left\{\begin{array}{c} \leqslant \\ = \\ \geqslant \end{array}\right\}
\mathbf{b} \\
\mbox{และ} & \mathbf{x} \geqslant 0
\end{array}
\]
โดยที่
$\mathbf{x}=\{x_1,x_2,\ldots,x_n\}$ เป็นเวกเตอร์ขนาด $n$ ของตัวแปร
$\mathbf{c}$ เป็นเวกเตอร์ขนาด $n$ ของสัมประสิทธิ์
$\mathbf{b}$ เป็นเวกเตอร์ขนาด $m$ ของค่าทางขวามือ
$\mathbf{A}$ เป็นเมตริกซ์ขนาด $m\times n$
เวกเตอร์ทั้งหมดและเมตริกซ์มีสมาชิกเป็นจำนวนจริง
แอปพลิเคชันนี้ใช้คำนวณหาค่า $\mathbf{x}$ ที่จะทำให้ฟังก์ชัน $f(\mathbf{x})$
มีค่ามากที่สุดหรือน้อยที่สุดตามที่เราต้องการ
แอปพลิเคชันนี้ต่างจาก กำหนดการเชิงเส้น ตรงที่มันสามารถแก้ปัญหาที่มี constraints เป็นเมตริกซ์ขนาดใหญ่และ sparse ได้อย่างมีประสิทธิภาพ ขณะที่ กำหนดการเชิงเส้น ใช้สำหรับปัญหาที่มีขนาดเล็กเท่านั้น
ข้อมูลอินพุท
แอปพลิเคชันนี้ต้องใช้ข้อมูลอินพุทสองส่วน
- ส่วนแรกจะเหมือนกันกับใน กำหนดการเชิงเส้น
-
ส่วนที่สองจะเป็น linear constraints ในรูปของ sparse matrix ขนาด $m\times(n+2)$ และเฉพาะสมาชิกที่ไม่เป็นศูนย์ของเมตริกซ์เท่านั้นที่จะนำมาใช้ โดยสมาชิกเหล่านี้จะเป็นข้อมูลอินพุทในรูป Coordinate list โดยแถวและหลักเริ่มนับจากหนึ่งไม่ใช่ศูนย์ sparse matrix นี้เก็บ $\mathbf{A}$ ไว้ใน $n$ หลักแรก สมาชิกจาก $\{-1,0,1\}$ ในหลักที่ $n+1$ และ $\mathbf{b}$ ในหลักสุดท้าย
ยกตัวอย่างเช่น linear constraints จาก กำหนดการเชิงเส้น จะมีข้อมูลในรูปของ sparse matrix ดังนี้
1 1 1 1 2 1 1 3 -1 1 5 1 2 1 -2 2 2 1 2 3 2 2 4 1 2 5 -5 3 1 1 3 2 -1 3 4 -1 3 5 4 4 2 1 4 3 1 4 4 -1 4 5 5จะสังเกตว่า 0 สามตัวนั้นไม่มีในข้อมูลนี้