تالار گفتمان مانشت
ذخیره ماتریس های سه قطری در ارایه یک بعدی - نسخه‌ی قابل چاپ

ذخیره ماتریس های سه قطری در ارایه یک بعدی - kamal3401 - 30 آذر ۱۳۹۴ ۰۹:۳۶ ب.ظ

سلام
من خیلی از منابع هارو نگاه کردم تا نحوه ی صرفه جویی حافظه تو ماتریس های یک قطری و سه قطری رو پیدا کنم ولی چیزی پیدا نکردم
از دوستان کسی فرمول تبدیل این ماتریس هارو میدونه؟
لطفا اگه اطلاعاتی در این مورد دارید هم حالت سطریشو بگید و هم ستونیشو
ممنون

RE: ذخیره ماتریس های سه قطری در ارایه یک بعدی - Iranian Wizard - 30 آذر ۱۳۹۴ ۱۰:۳۹ ب.ظ

سلام.در ماتریس ۳ قطری [tex]A\: [1..n\: ,\: 1..n\: ][/tex] اگه بخوایم عناصر اونو تو آرایه یک بعدی [tex]B\: [1\: ..\: 3n-2\: ][/tex] ذخیره کنیم.
۱-اگه به روش سطری ذخیره کنیم--> [tex]A\: [i\: ,\: j\: ]\: =\: B\: [2i j-2\: ][/tex] (به شرطی که [tex]A\: [i\: ,\: j\: ][/tex] غیر صفر باشد.یعنی [tex]|i-j|\le1[/tex] )
۲-اگه به روش ستونی ذخیره کنیم --> [tex]َA\: [i\: ,\: j\: ]\: =\: B\: \: [2j i-2\: ][/tex] ( به شرطی که [tex]َA\: [i\: ,\: j\: ][/tex] غیر صفر باشد.یعنی [tex]|i-j|\le1[/tex] )

برای ذخیره ماتریس یک قطری [tex]A\: [1..n\: ,\: 1..n\: ][/tex] در یک آرایه یک بعدی [tex]B\: [1..n\: ][/tex] داریم:
[tex]A\: [i\: ,\: j\: ]\: =\: B\: [i\: ]\: or\: A\: [i\: ,\: j\: ]\: =\: B\: [j\: ][/tex] به شرطی که [tex]A\: [i\: ,\: j\: ][/tex] غیر صفر باشد،یعنی [tex]i=j[/tex] باشد.
امیدوارم سوالتون همین بوده باشه.

RE: ذخیره ماتریس های سه قطری در ارایه یک بعدی - kamal3401 - 08 دى ۱۳۹۴ ۰۱:۱۲ ب.ظ

(۳۰ آذر ۱۳۹۴ ۱۰:۳۹ ب.ظ)IranianWizard نوشته شده توسط:  سلام.در ماتریس ۳ قطری [tex]A\: [1..n\: ,\: 1..n\: ][/tex] اگه بخوایم عناصر اونو تو آرایه یک بعدی [tex]B\: [1\: ..\: 3n-2\: ][/tex] ذخیره کنیم.
۱-اگه به روش سطری ذخیره کنیم--> [tex]A\: [i\: ,\: j\: ]\: =\: B\: [2i j-2\: ][/tex] (به شرطی که [tex]A\: [i\: ,\: j\: ][/tex] غیر صفر باشد.یعنی [tex]|i-j|\le1[/tex] )
۲-اگه به روش ستونی ذخیره کنیم --> [tex]َA\: [i\: ,\: j\: ]\: =\: B\: \: [2j i-2\: ][/tex] ( به شرطی که [tex]َA\: [i\: ,\: j\: ][/tex] غیر صفر باشد.یعنی [tex]|i-j|\le1[/tex] )

برای ذخیره ماتریس یک قطری [tex]A\: [1..n\: ,\: 1..n\: ][/tex] در یک آرایه یک بعدی [tex]B\: [1..n\: ][/tex] داریم:
[tex]A\: [i\: ,\: j\: ]\: =\: B\: [i\: ]\: or\: A\: [i\: ,\: j\: ]\: =\: B\: [j\: ][/tex] به شرطی که [tex]A\: [i\: ,\: j\: ][/tex] غیر صفر باشد،یعنی [tex]i=j[/tex] باشد.
امیدوارم سوالتون همین بوده باشه.

سلام ممنون از لطفتون
این فرمول فقط تو حالتی قابل اجراست که اندیس شروع یک باشه
مثلا تو زبان سی دیگ عمل نمیکنه