New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Problem nawiasowania macierzy - Wikipedia, wolna encyklopedia

Problem nawiasowania macierzy

Z Wikipedii

Problem nawiasowania macierzy - jest problemem znalezienia takiego nawiasowania ciągu macierzy \! A_0 A_1 \cdots A_n, by zminimalizować koszt poszczególnych mnożeń. Nawiasowanie takie nazywa się optymalnym. Mówimy, że iloczyn macierzy \! A_0\cdot A_1\cdot \cdots \cdot A_n ma ustalone nawiasowanie, jeżeli tworzy go pojedyńcza macierz, lub iloczyn dwóch iloczynów macierzy o ustalonym nawiasowaniu.

Spis treści

[edytuj] Przykład ustalonych nawiasowań

Niech \! A_0 A_1 A_2 A_3 A_4 będzie ciągiem macierzy. Ich iloczyn ma następujące ustalone nawiasowania:

\! (((A_0 \cdot A_1) \cdot A_2)\cdot A_3)
\! ((A_0 \cdot (A_1 \cdot A_2))\cdot A_3)
\! ((A_0 \cdot A_1)\cdot (A_2\cdot A_3))
\! ((A_0 \cdot ((A_1\cdot A_2\cdot) A_3))
\! (A_0 \cdot (A_1\cdot (A_2\cdot A_3)))

[edytuj] Nawiasowanie a koszt obliczenia iloczynu macierzy

Łatwo przekonać się, że wybór nawiasowania może mieć znaczący wynik na liczbę operacji potrzebnych do obliczenia iloczynu macierzy - koszt pomnożenia dwóch macierzy, o wymiarach odpowiednio a × b i b × c wynosi \! O(a\cdot b\cdot c) (dokładnie - wymaga \! a\cdot b\cdot c mnożeń skalarnych)

Niech dane będą trzy macierze \! A_0 A_1 A_2 o rozmiarach odpowiednio 2 × 20, 20 × 1 i 1 × 10. Dla nawiasowania \! ((A_0\cdot A_1)\cdot A_2) koszt iloczynu wyniesie:

\! 2\cdot 20 \cdot 1\ =\ 40 (koszt obliczenia \! A_0\cdot A_1\ = \ A^{'}) + \! 2\cdot 1 \cdot 10\ =\ 20 (koszt obliczenia \! A^{'}\cdot A_2). Razem: \! 60

Dla tych samych macierzy, ale nawiasowania \! (A_0\cdot (A_1\cdot A_2)) koszt mnożenia wyniesie:

\! 20 \cdot 1 \cdot 10 mnożeń dla \! A_1\cdot A_2 plus \! 2\cdot 1\cdot 10 mnożeń skalarnych

co daje łącznie \! 220 mnożeń skalarnych potrzebnych do pomnożenia wyniku przez \! A_0. Oszczędność nawiasowania pierwszego jest oczywista.

[edytuj] Własność optymalnej podstruktury

Można wykazać, że problem nawiasowania macierzy wykazuje własność optymalnej podstruktury.

[edytuj] Dowód

Załóżmy, że dla optymalnego nawiasowania macierzy \! A_i A_{i+1} \cdots A_j występuje podział między \! A_p i \! A_{p+1}, oraz, niewprost, że dla tego nawiasowania nawiasowanie \! A_i A_{i+1} \cdots A_p nie jest optymalne. Wówczas można by w nawiasowaniu \! A_i A_{i+1} \cdots A_j "podmienić" nawiasowanie \! A_i A_{i+1} \cdots A_p na optymalne, w wyniku czego otrzymalibyśmy nowe nawiasowanie \! A_i A_{i+1} \cdots A_j, lepsze od optymalnego - sprzeczność.

[edytuj] Rozwiązanie problemu nawiasowania macierzy

Problem nawiasowania ciągu macierzy można łatwo rozwiązać stosując algorytm dynamiczny. Definiujemy koszt optymalnego nawiasowania jako funkcję optymalnych rozwiązań podproblemów.

Niech \! k[i][j] oznacza minimalny koszt wymnożenia macierzy \! A_i A_{i+1} \cdots A_j \! k[i][j] Może być zdefiniowane następująco:

  • \! k[i][i] - nawiasowanie tylko jednej macierzy - \! k[i][i]\ =\ 0
  • \! k[i][j] - nawiasonie to musi wyznaczać punkt podziału p, taki, że (zgodnie z podpunktem o własności optymalnego nawiasowania) \! A_i \cdots A_p i \! A_{p+1} \cdots A_j są optymalnymi rozwiązaniami podproblemów. Wtedy \! k[i][j] jest równe sumie minimalnych kosztów obliczenia \! A_i \cdots A_p i \! A_{p+1} \cdots A_j plus koszt pomnożenia macierzy wynikowych tych podrozwiązań:
\! k[i][j]\ =\ min_{i\le k <j} \{m[i][k]\ +\ m[k+1][j]\ +\ a_{i-1}\cdot b_k \cdot c_j\}


Zalążek artykułu To jest tylko zalążek artykułu z dziedziny informatyki. Jeśli możesz, rozbuduj go.

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu