زمان کنونی: ۱۰ فروردین ۱۴۰۳, ۱۲:۱۴ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

ارسال:
  

zeinab پرسیده:

ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

میدونین که برای جلوگیری از هدر رفتن فضای حافظه ، ماتریس بالا مثلثی رو در یک آرایه یک بعدی ذخیره میکنیم.
که برای یافتن مکان عنصر [tex]A\left [ i,j \right ][/tex] از فرمول [tex][ (\left ( j-1 \right )*j)/2\left \right ] i[/tex]
استفاده میشه!!
میخوام بدونم چجوری بدست اومده؟؟
تقریبا میدونم !! اما این [tex]j/2[/tex] نمیدونم از کجا اومده!!
اگر میشه کامل توضیح بدین. مرسی
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Masoud05 پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

ماتریس زیر رو در نظر بگرید

۱ ۱ ۱ ۱
۱ ۱ ۱ ۰
۱ ۱ ۰ ۰
۱ ۰ ۰ ۰


فرض کنید آدرس مثلا خونه [۴,۴] رو میخواید. قبول دارید در ستون آخر ۴ تا ۱ هست ( در واقع در ستون اخر به اندازه بعد ماتریس ۱ هست) پس یه ۴ اینجا داریم ( همون مقدار i که شما تو فرمول آوردید)

حالا قبول داری در سطر اول یک عدد ۱، در ستون دوم ۲ عدد ۱ و در ستون سوم ۳ عدد ۱ داری که یه سری تولید میکنه بفرم زیر :
[tex]n(n 1)/2[/tex]

یکم اینجا عجیب شد تو فرمولی که گفتید n-1 هست اما تو فرمول من n+1 ، دلیلش ساده هست ، شما داری برا ستون ۴ کار میکنی و مقدار ستون = ۴ هست اما من دارم رو ستون ۱ تا ۳ بحث میکنم، این اختلاف از این اومده

راحت میتونم رو کاغذ توضیح بدم اما نوشتنش اینجا سخته Big Grin
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

zeinab پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

سلام مرسی. اینو فهمیدم! اما
یه فرمول داریم که برای بدست آوردن آدرس [tex]A\left [ i,j \right ][/tex] ، در ذخیره کردن ماتریس بصورت سطری یا ستونی ، ازش استفاده میکنیم . میخواستم بدونم بر اساس اون میتونیم این فرمول رو هم بدست بیاریم؟؟ اگر آره ، لطفا بر اساس اون برام توضیح بدین.

در واقع فکر کنم این چیزی که شما گفتین همونه!! اما فرمولیش این نمیشه Big Grin
اینجوری میشه
[tex]A\left [ i,j \right ]=\left [ \left ( i-1 \right )\left ( n\left ( n 1 \right )/2 \right ) \left ( j-1 \right ) \right ] 1[/tex]
[tex]A\left [ i,j \right ][/tex]

که ماتریس B رو به این صورت در نظر گرفتم [tex]B\left [ 1..1,1..n\left ( \left ( n 1 \right )/2 \right ) \right ][/tex]
که همون ماتریس یک بعدی مون هست!!

این فرمولی که نوشتم برا ماتریس پایین مثلثی هست که بصورت سطری ذخیره میشه!!
نقل قول این ارسال در یک پاسخ

ارسال:
  

bahman2000 پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

(۲۶ آبان ۱۳۹۲ ۱۱:۲۱ ق.ظ)zeinab نوشته شده توسط:  سلام مرسی. اینو فهمیدم! اما
یه فرمول داریم که برای بدست آوردن آدرس [tex]A\left [ i,j \right ][/tex] ، در ذخیره کردن ماتریس بصورت سطری یا ستونی ، ازش استفاده میکنیم . میخواستم بدونم بر اساس اون میتونیم این فرمول رو هم بدست بیاریم؟؟ اگر آره ، لطفا بر اساس اون برام توضیح بدین.

در واقع فکر کنم این چیزی که شما گفتین همونه!! اما فرمولیش این نمیشه Big Grin
اینجوری میشه
[tex]A\left [ i,j \right ]=\left [ \left ( i-1 \right )\left ( n\left ( n 1 \right )/2 \right ) \left ( j-1 \right ) \right ] 1[/tex]
[tex]A\left [ i,j \right ][/tex]

که ماتریس B رو به این صورت در نظر گرفتم [tex]B\left [ 1..1,1..n\left ( \left ( n 1 \right )/2 \right ) \right ][/tex]
که همون ماتریس یک بعدی مون هست!!

این فرمولی که نوشتم برا ماتریس پایین مثلثی هست که بصورت سطری ذخیره میشه!!
با سلام:
اگر بخواهیم ماتریس n*n بالا مثلثی یا پایین مثلثی A را در یک آرایه ی یک بعدی B ذخیره کنیم به شرطی که فقط عناصر غیر صفر(غیرمهم) A در B ذخیره شوند ۴ حالت پیش می آید:
الف) ماتریس A بالا مثلثی باشد و بخواهیم عناصر مهم A را بصورت سطری در آرایه B ذخیره کنیم.
ب) ماتریس A پایین مثلثی باشد و بخواهیم عناصر مهم A را بصورت سطری در آرایه B ذخیره کنیم.
ج) ماتریس A بالا مثلثی باشد و بخواهیم عناصر مهم A را بصورت ستونی در آرایه B ذخیره کنیم.
د) ماتریس A پایین مثلثی باشد و بخواهیم عناصر مهم A را بصورت ستونی در آرایه B ذخیره کنیم.
[تصویر:  226012_20564036526071336558.jpg]
موارد الف و ج را نیز می توان به این شکل مورد بررسی قرار داد.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

zeinab پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

(۲۶ آبان ۱۳۹۲ ۰۲:۰۵ ب.ظ)bahman2000 نوشته شده توسط:  
(26 آبان ۱۳۹۲ ۱۱:۲۱ ق.ظ)zeinab نوشته شده توسط:  سلام مرسی. اینو فهمیدم! اما
یه فرمول داریم که برای بدست آوردن آدرس [tex]A\left [ i,j \right ][/tex] ، در ذخیره کردن ماتریس بصورت سطری یا ستونی ، ازش استفاده میکنیم . میخواستم بدونم بر اساس اون میتونیم این فرمول رو هم بدست بیاریم؟؟ اگر آره ، لطفا بر اساس اون برام توضیح بدین.

در واقع فکر کنم این چیزی که شما گفتین همونه!! اما فرمولیش این نمیشه Big Grin
اینجوری میشه
[tex]A\left [ i,j \right ]=\left [ \left ( i-1 \right )\left ( n\left ( n 1 \right )/2 \right ) \left ( j-1 \right ) \right ] 1[/tex]
[tex]A\left [ i,j \right ][/tex]

که ماتریس B رو به این صورت در نظر گرفتم [tex]B\left [ 1..1,1..n\left ( \left ( n 1 \right )/2 \right ) \right ][/tex]
که همون ماتریس یک بعدی مون هست!!

این فرمولی که نوشتم برا ماتریس پایین مثلثی هست که بصورت سطری ذخیره میشه!!
با سلام:
اگر بخواهیم ماتریس n*n بالا مثلثی یا پایین مثلثی A را در یک آرایه ی یک بعدی B ذخیره کنیم به شرطی که فقط عناصر غیر صفر(غیرمهم) A در B ذخیره شوند ۴ حالت پیش می آید:
الف) ماتریس A بالا مثلثی باشد و بخواهیم عناصر مهم A را بصورت سطری در آرایه B ذخیره کنیم.
ب) ماتریس A پایین مثلثی باشد و بخواهیم عناصر مهم A را بصورت سطری در آرایه B ذخیره کنیم.
ج) ماتریس A بالا مثلثی باشد و بخواهیم عناصر مهم A را بصورت ستونی در آرایه B ذخیره کنیم.
د) ماتریس A پایین مثلثی باشد و بخواهیم عناصر مهم A را بصورت ستونی در آرایه B ذخیره کنیم.
[تصویر:  226012_20564036526071336558.jpg]
موارد الف و ج را نیز می توان به این شکل مورد بررسی قرار داد.

مرسی بازم نفهمیدم!! کلا هدف ما از ذخیره ماتریس های بالا و پایین مثلثی در یک آرایه یک بعدی ، اینه که عناصر غیر مهم یعنی صفرها ذخیره نشن!!
و من نفهمیدم که این فرمول چجوری بدست اومد!!
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

bahman2000 پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

در ابتدا بایستی تصحیح کنم که در ارسال قبلی فرمول ارائه شده برای سطری مربوط به آرایه پایین مثلثی بوده و فرمول ارائه شده برای ستونی مربوط به آرایه بالا مثلثی می باشد که به اشتباه هر دو فرمول را برای آرایه پایین مثلثی در نظر گرفته بودم.
و اما توضیح بیشتر در مورد سوالتان...
همانطور که ما وقتی می خواستیم آدرس درایه ی (a(i,j را با دانستن آدرس شروع(base) تعیین کنیم کاری که می کردیم این بود که اگر درایه ها به صورت سطری ذخیره شده بودند به تعداد سطر ها تا قبل رسیدن به سطری که درایه a انجا قرار دارد (تا سطر i-1)حرکت می کردیم سپس در سطر i به جلو حرکت می کردیم تا به ستون j برسیم و با اینکار عملا تعداد عناصر قبل از درایه (a(i,j را پیدا می کردیم و آن را در سایز نوع آرایه ضرب می کردیم و در نهایت به اضافه ی base می کردیم تا آدرس درایه ی a به دست آید.
حال با این دید برای ذخیره آرایه پایین مثلثی به روش الف) سطری: برای درایه (a(i,j که یکی از عناصر مهم می باشد و آن را در خانه ی t ام آرایه یک بعدی b ذخیره کرده ایم و t در اصل به معنی چندمین درایه مهم ذخیره شده در آرایه ی b است و در نهایت t برابر خواهد بود با تعداد عناصر مهم در سطر های بالای (a(i,j به اضافه ی تعداد عناصر مهم در خود سطر iام که با محاسبه ی این دو مقدار تعیین می کنیم که درایه a چندمین عنصر ذخیره شده در آرایه ی b خواهد بود.
تعداد عناصر مهم در سطر های بالای (a(i,j=
(i(i-1)/2=1+2+3+...+(i-1
تعداد عناصر مهم درسطر iام که قبل از درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=j
که با ترکیب همان فرمولی به دست می آید که در بالا برای پایین مثلثی در روش سطری بیان شد.
ب) ستونی
تعداد عناصر مهم در ستون های قبل (a(i,j=
...=(n+n-1+n-2+...+n-(j-2
تعداد عناصر مهم در خود ستون jام که بالای درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=n-j+1
که با ترکیب فرمولی به دست می آید که برای پایین مثلثی در روش ستونی می باشد.
با همین طرز فکر برای آرایه بالا مثلثی هم در روش سطری و هم در روش ستونی می توان فرمول هایی را استنتاج کرد.
در آخر امیدوارم که کاملا متوجه شده باشید.
نقل قول این ارسال در یک پاسخ

ارسال:
  

pioneer01 پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

(۲۷ آبان ۱۳۹۲ ۱۲:۴۸ ق.ظ)bahman2000 نوشته شده توسط:  در ابتدا بایستی تصحیح کنم که در ارسال قبلی فرمول ارائه شده برای سطری مربوط به آرایه پایین مثلثی بوده و فرمول ارائه شده برای ستونی مربوط به آرایه بالا مثلثی می باشد که به اشتباه هر دو فرمول را برای آرایه پایین مثلثی در نظر گرفته بودم.
و اما توضیح بیشتر در مورد سوالتان...
همانطور که ما وقتی می خواستیم آدرس درایه ی (a(i,j را با دانستن آدرس شروع(base) تعیین کنیم کاری که می کردیم این بود که اگر درایه ها به صورت سطری ذخیره شده بودند به تعداد سطر ها تا قبل رسیدن به سطری که درایه a انجا قرار دارد (تا سطر i-1)حرکت می کردیم سپس در سطر i به جلو حرکت می کردیم تا به ستون j برسیم و با اینکار عملا تعداد عناصر قبل از درایه (a(i,j را پیدا می کردیم و آن را در سایز نوع آرایه ضرب می کردیم و در نهایت به اضافه ی base می کردیم تا آدرس درایه ی a به دست آید.
حال با این دید برای ذخیره آرایه پایین مثلثی به روش الف) سطری: برای درایه (a(i,j که یکی از عناصر مهم می باشد و آن را در خانه ی t ام آرایه یک بعدی b ذخیره کرده ایم و t در اصل به معنی چندمین درایه مهم ذخیره شده در آرایه ی b است و در نهایت t برابر خواهد بود با تعداد عناصر مهم در سطر های بالای (a(i,j به اضافه ی تعداد عناصر مهم در خود سطر iام که با محاسبه ی این دو مقدار تعیین می کنیم که درایه a چندمین عنصر ذخیره شده در آرایه ی b خواهد بود.
تعداد عناصر مهم در سطر های بالای (a(i,j=
(i(i-1)/2=1+2+3+...+(i-1
تعداد عناصر مهم درسطر iام که قبل از درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=j
که با ترکیب همان فرمولی به دست می آید که در بالا برای پایین مثلثی در روش سطری بیان شد.
ب) ستونی
تعداد عناصر مهم در ستون های قبل (a(i,j=
...=(n+n-1+n-2+...+n-(j-2
تعداد عناصر مهم در خود ستون jام که بالای درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=n-j+1
که با ترکیب فرمولی به دست می آید که برای پایین مثلثی در روش ستونی می باشد.
با همین طرز فکر برای آرایه بالا مثلثی هم در روش سطری و هم در روش ستونی می توان فرمول هایی را استنتاج کرد.
در آخر امیدوارم که کاملا متوجه شده باشید.

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

۰
ارسال:
  

zeinab پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

تشکر لطف کردی. فقط نمیدونم کی الکی بهمون منفی داده!!
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

zarinzri پاسخ داده:

RE: ذخیره ماتریس بالا و یا پایین مثلثی در یک آرایه یک بعدی

سلام
چطوری یک آرایه یک بعدی رو میشه به یک ماتریس بالا مثلثی تبدیل کرد؟
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  چه جوری با سطح زبان انگلیسی تقریبا پایین رفرنس بخونیم؟ saharitst ۰ ۱,۱۹۵ ۲۱ آبان ۱۴۰۰ ۰۴:۱۱ ب.ظ
آخرین ارسال: saharitst
  تکمیل قطعه کد مجموع آرایه Xzrix ۰ ۱,۲۸۵ ۰۲ دى ۱۳۹۹ ۰۷:۱۹ ب.ظ
آخرین ارسال: Xzrix
Sad ذخیره ماتریس پایین مثلثی / بالا مثلثی به شیوه سطری یا ستونی shayesteNEY ۵ ۹,۸۶۸ ۲۲ مهر ۱۳۹۹ ۱۱:۲۸ ب.ظ
آخرین ارسال: Negiiin
  مهمترین فصل های ذخیره و بازیابی مقسمی enofcom ۱۰ ۵,۴۳۹ ۲۵ آبان ۱۳۹۸ ۰۵:۲۳ ب.ظ
آخرین ارسال: alma1988
  ضرب ماتریس ها roller1829 ۰ ۱,۸۲۲ ۱۹ مهر ۱۳۹۸ ۰۲:۴۸ ب.ظ
آخرین ارسال: roller1829
  برای استخدام به اخرین مدرک نگاه میکنن یا میشه مدرک پایین تر ارائه داد؟ R.g- ۴ ۴,۴۳۲ ۲۰ مرداد ۱۳۹۸ ۰۹:۲۵ ب.ظ
آخرین ارسال: marvelous
  کاربرد ومشخصات فنی پانل سه بعدی hadiiss ۰ ۱,۹۱۹ ۱۷ تیر ۱۳۹۸ ۰۲:۲۳ ب.ظ
آخرین ارسال: hadiiss
  کاربرد ومشخصات فنی پانل سه بعدی mahsaa16 ۰ ۱,۹۲۹ ۱۳ خرداد ۱۳۹۸ ۰۴:۱۶ ب.ظ
آخرین ارسال: mahsaa16
Question Pointer C++ آرایه کمک فوری ... porseshgar ۰ ۱,۴۹۷ ۰۳ اسفند ۱۳۹۷ ۰۲:۵۹ ب.ظ
آخرین ارسال: porseshgar
  آرایه نامرتب Sanazzz ۴ ۳,۸۵۳ ۰۴ بهمن ۱۳۹۷ ۱۱:۴۹ ب.ظ
آخرین ارسال: Sanazzz

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close