**אלגוריתם לויד-מקס** הוא אלגוריתם הקרוי על שמו של סטוארט לויד למציאת חלוקה לקבוצות של נקודות במרחב אוקלידי לתאים קמורים. בדומה לאלגוריתם k-מרכזים, האלגוריתם מוצא נקודות מרכז לכל קבוצה בחלוקה, ואחר כך מחלק את הנקודות בהתאם לקרבתן למרכזים. בהקשר זה פעולת המיצוע על הנקודות מוחלפת באינטגרל על שטח המרחב, ופעולת מציאת המרכזים הקרובים יוצרת דיאגרמת וורונוי.

את האלגוריתם ניתן להפעיל במרחב אוקלידי, אך אלגוריתמים דומים יכולים להיות מופעלים על מרחבים מממד גבוה יותר או למרחבים לא אוקלידים.

בקוונטיזציה, האלגוריתם מאפשר למזער את השגיאה הריבועית הממוצעת.

הדגמה של אלגוריתם לויד-מקס. דיאגרמת וורונוי מוצגת עבור הנקודות בכל שלב. סימני הפלוס מסמנים את המרכזים של תאי וורונוי.איטרציה 1איטרציה 2איטרציה 3איטרציה 15בתרשים האחרון, הנקודות סמוכות למרכזים של תאי וורונוי.

קוונטיזציה אחידה ושגיאת קוונטיזציה
----------------------------------

בקוונטיזציה אחידה, בהינתן N, מספר הרמות שאליהן אנו מחלקים את הטווח, מספיק לקבוע את רמת הקוונטיזציה הראשונה ואת ההפרש בין הרמות, וכך הקוונטיזציה נקבעת חד-חד-ערכית. אולם, הדבר מגביל אותנו מבחינת שגיאת הקוונטיזציה שאותה ניתן להשיג. נרצה להשיג חופש גדול יותר בבחירת מדרגות הקוונטיזציה וערכיהן בשביל לקבל שגיאה נמוכה יותר.

{\displaystyle \mathrm {MSE} =\int \limits \_{-\infty }^{a1}(x-x\_{1})^{2}f\_{x}(x)dx+\textstyle \sum \_{i=2}^{N}\int \limits \_{a\_{i-2}}^{a\_{i}}(x-x\_{i})^{2}f\_{x}(x)dx+\int \limits \_{a\_{N-1}}^{\infty }(x-x\_{N})^{2}f\_{x}(x)dx+\textstyle \displaystyle }

נחשב את {\displaystyle x\_{i}} ו- {\displaystyle a\_{i}} האופטימליים:

עבור {\displaystyle a\_{i}}, נגזור ונשווה ל-0:

{\displaystyle {dMSE \over da\_{i}}=f\_{x}(a\_{i})[(a\_{i}-x\_{i})^{2}-(a\_{i}-x\_{i+1})^{2}]=0}

(שכן, {\displaystyle {d \over db}\int \limits \_{a}^{b}g(x)dx=g(b),\qquad {d \over da}\int \limits \_{a}^{b}g(x)dx=g(a)} )

ואזי, נקבל {\displaystyle a\_{i}} האופטימלי:

{\displaystyle a\_{i}={x\_{i}+x\_{i+2} \over 2}}

עבור {\displaystyle x\_{i}}, נגזור ונשווה ל-0:

{\displaystyle {dMSE \over da\_{i}}=2\int \limits \_{a\_{i-1}}^{a\_{i}}(x\_{i}-x)f\_{x}(x)dx=0}

{\displaystyle x\_{i}\int \limits \_{a\_{i-1}}^{a\_{i}}f(x)dx=\int \limits \_{a\_{i-1}}^{a\_{i}}xf(x)dx}

ואזי, נקבל {\displaystyle x\_{i}} האופטימלי:

{\displaystyle x\_{i}={\int \limits \_{R\_{i}}xf(x)dx \over \int \limits \_{R\_{i}}f(x)dx}}

כאשר: {\displaystyle R\_{i}\in \left\{{a\_{i-1}},{a\_{i}}\right\}}

אלגוריתם לויד-מקס
-----------------

- קבע בצורה שרירותית ואחידה את {\displaystyle R\_{i}} עבור {\displaystyle i=1,...N}.

- בצע בצורה איטרטיבית עד התכנסות:

1. {\displaystyle x\_{i}=\int \limits \_{R\_{i}}xf(x)dx/\int \limits \_{R\_{i}}f(x)dx,\qquad i=1,...N}
2. {\displaystyle a\_{i}={x\_{i}+x\_{i+2} \over 2},\qquad i=1,...N}

* לא בהכרח מתכנס למינימום מוחלט (יכולים להיתקע במינימום מקומי)
* כאמור, אלגוריתם זה נותן קוונטיזציה {\displaystyle (a\_{i},x\_{i})}
* ישנן טבלאות עבור התפלגות גאוסית {\displaystyle N(0,1)} עבור ערכי N שונים.
	+ במקרים שהתוחלת היא {\displaystyle \mu }, אזי: {\displaystyle {\widehat {a\_{i}}}=a\_{i}+\mu \qquad {\widehat {x\_{i}}}=x\_{i}+\mu }
	+ ובמקרים שהשונות היא {\displaystyle \sigma ^{2}}, אזי: {\displaystyle {\widehat {a\_{i}}}=a\_{i}\sigma \qquad {\widehat {x\_{i}}}=x\_{i}\sigma }
	+ ובמקרה הכללי: {\displaystyle {\widehat {a\_{i}}}=a\_{i}\sigma +\mu \qquad {\widehat {x\_{i}}}=x\_{i}\sigma +\mu \qquad {\widehat {MSE}}=\sigma ^{2}\cdot MSE}

דוגמאות
-------

הפונקציה הראשונה
דוגמה להתכנסות אלגוריתם לויד- מקס למינימום לוקלי:

נניח N=2. בתמונה משמאל ניתן לראות את {\displaystyle f\_{x}(x)}. 

{\displaystyle a\_{1}={x\_{1}+x\_{2} \over 2}}, וכן מתקיימים התנאים לLloyd Max. 

הפונקציה השנייהלמרות שקיימנו את תנאי Lloyd Max, קיבלנו מינימום לוקלי.

פתרון טוב יותר היה הפונקציה התחתונה:

לפי תנאי 1 באלגוריתם, מקבלים את הערך של {\displaystyle x\_{2}} והוא יהיה יותר קרוב למלבן הרחב בציור הראשון.

ראו גם
------

* קוונטיזציה (עיבוד אותות)
* טעות ריבועית ממוצעת

לקריאה נוספת
------------

Lloyd, Stuart P. (1982), "Least squares quantization in PCM" (PDF), *IEEE Transactions on Information Theory*, **28** (2): 129–137, doi:10.1109/TIT.1982.1056489

קישורים חיצוניים
----------------

ויקישיתוף מדיה וקבצים בנושא **אלגוריתם לויד-מקס** בוויקישיתוף
* אנימציה הממחישה את התקדמות האלגוריתם