Adjacency list:
لیست مجاورت یک روش برای نمایش گراف است که بیان میکند که هر گره با چه گرههای دیگری در ارتباط است. در این روش، برای هر گره، لیستی از تمام گرههای مجاور آن در گراف ذخیره میشود.
با استفاده از لیست مجاورت، میتوان به سادگی و به سرعت اطلاعات در مورد روابط بین گرهها را به دست آورد. علاوه بر این، با استفاده از لیست مجاورت، عملیات مختلفی نظیر جستجو، پیدا کردن همسایگان و تحلیل شبکه را به سادگی قابل انجام است.
بنابراین، لیست مجاورت یک روش کارآمد و ساده برای نمایش و تحلیل شبکهها و گرافها است که در بسیاری از حوزههای علمی و فناورانۀ کاربرد دارد.
📣👨💻 @AlgorithmDesign_DataStructuer
لیست مجاورت یک روش برای نمایش گراف است که بیان میکند که هر گره با چه گرههای دیگری در ارتباط است. در این روش، برای هر گره، لیستی از تمام گرههای مجاور آن در گراف ذخیره میشود.
با استفاده از لیست مجاورت، میتوان به سادگی و به سرعت اطلاعات در مورد روابط بین گرهها را به دست آورد. علاوه بر این، با استفاده از لیست مجاورت، عملیات مختلفی نظیر جستجو، پیدا کردن همسایگان و تحلیل شبکه را به سادگی قابل انجام است.
بنابراین، لیست مجاورت یک روش کارآمد و ساده برای نمایش و تحلیل شبکهها و گرافها است که در بسیاری از حوزههای علمی و فناورانۀ کاربرد دارد.
📣👨💻 @AlgorithmDesign_DataStructuer
👍2
آنالیز توابع بازگشتی :
از آنجایی که در توابع بازگشتی، توابع خود را فراخوانی کرده و برای انتقال جواب از روش پشته استفاده می کنند ، فلذا تنها راه پیاده سازی پشته درخت است.
توضیح کد بازگشتی در تصویر :
آیا 7>1است ؟ خیر. فلذا خط ' 1 return ' اجرا نمی شود. در غیر این صورت عدد (7)+n ، فراخوانی مجدد تابع (عدد انتزاعی)
مجددا تابع فراخوانی می شود برای عدد .1شرط برسی می شود .آیا 1>1؟ خیر. فلذا خط 1 return'
اجرا نمی شود. در غیر این صورت عدد (6)+n فراخوانی مجدد تابع( عدد انتزاعی)
مراحل فوق را تا زمانی تکرار می کنیم که شرط نقض شود (1=>n ) باشد و عدد 1 را return کند.
📣👨💻 @AlgorithmDesign_DataStructuer
از آنجایی که در توابع بازگشتی، توابع خود را فراخوانی کرده و برای انتقال جواب از روش پشته استفاده می کنند ، فلذا تنها راه پیاده سازی پشته درخت است.
توضیح کد بازگشتی در تصویر :
آیا 7>1است ؟ خیر. فلذا خط ' 1 return ' اجرا نمی شود. در غیر این صورت عدد (7)+n ، فراخوانی مجدد تابع (عدد انتزاعی)
مجددا تابع فراخوانی می شود برای عدد .1شرط برسی می شود .آیا 1>1؟ خیر. فلذا خط 1 return'
اجرا نمی شود. در غیر این صورت عدد (6)+n فراخوانی مجدد تابع( عدد انتزاعی)
مراحل فوق را تا زمانی تکرار می کنیم که شرط نقض شود (1=>n ) باشد و عدد 1 را return کند.
📣👨💻 @AlgorithmDesign_DataStructuer
هرس آلفا بتا(Alpha–beta pruning) چیست؟
الگوریتم minimax از طریق هرس آلفا-بتا بهینه شده است که در بخش بعدی به تفصیل توضیح داده شده است. نیاز برای هرس از این واقعیت ناشی می شود که درختان تصمیم ممکن است در برخی شرایط بسیار پیچیده شوند. برخی از شاخه های اضافی در آن درخت به پیچیدگی مدل می افزایند. برای دور زدن این موضوع، از هرس آلفا-بتا استفاده میشود که کامپیوتر را از بررسی کل درخت نجات میدهد. الگوریتم توسط این گره های غیر معمول کند می شود. در نتیجه حذف این گره ها، الگوریتم کارآمدتر می شود.
پیکربندی کلی(نسخه MIN):
ما در نودی مثل n مقدار MIN-VALUE را محاسبه میکنیم.
فرض کنید a بیشترین مقداری باشد که تابع MAX بالایی تا کنون کسب کرده است.
ما میخواهیم توی فرزندان n بگردیم.
اگر مقادیر یکی از فرزندان n از a کمتر باشد , نیازی به محاسبه ی بقیه ی فرزندان نیست.
نسخه MAX قریبنه حالت بالا است.
📣👨💻 @AlgorithmDesign_DataStructuer
الگوریتم minimax از طریق هرس آلفا-بتا بهینه شده است که در بخش بعدی به تفصیل توضیح داده شده است. نیاز برای هرس از این واقعیت ناشی می شود که درختان تصمیم ممکن است در برخی شرایط بسیار پیچیده شوند. برخی از شاخه های اضافی در آن درخت به پیچیدگی مدل می افزایند. برای دور زدن این موضوع، از هرس آلفا-بتا استفاده میشود که کامپیوتر را از بررسی کل درخت نجات میدهد. الگوریتم توسط این گره های غیر معمول کند می شود. در نتیجه حذف این گره ها، الگوریتم کارآمدتر می شود.
پیکربندی کلی(نسخه MIN):
ما در نودی مثل n مقدار MIN-VALUE را محاسبه میکنیم.
فرض کنید a بیشترین مقداری باشد که تابع MAX بالایی تا کنون کسب کرده است.
ما میخواهیم توی فرزندان n بگردیم.
اگر مقادیر یکی از فرزندان n از a کمتر باشد , نیازی به محاسبه ی بقیه ی فرزندان نیست.
نسخه MAX قریبنه حالت بالا است.
📣👨💻 @AlgorithmDesign_DataStructuer
👍1
چه تعداد درخت دودویی برچسبدارمتفاوت با n گره وبا برچسبهاي1تا n که داراي ترتیبهاي یکسان در دو روش پس ترتیب وبین ترتیب میباشند،وجود دارند؟
Anonymous Quiz
22%
n
52%
n!
25%
1
2%
0
در دورهی جبرخطی (Linear Algebra) بعد از مباحثِ پایهی ماتریسی، بحثهای کاربردیتری مانند SVD و ماتریس همبستگی را مطرح کردیم که به طورِ مستقیم در بسیاری از مسائل واقعی دنیای صنعت و تحقیقات علمی کاربرد دارند. در این درس میخواهیم به یکی از مباحثِ اصلی و پیشرفتهتر در جبر خطی بپردازیم که به آن آنالیز مولفه اصلی (Principal Component Analysis) یا به اختصار PCA میگویند. همچنین کاربرد آن را در مسائلِ حوزهی علومداده (Data Science) مشاهده کنیم.
یکی از کاربردهای اصلیِ PCA در عملیاتِ کاهشِ ویژگی (Dimensionality Reduction) است. PCA همانطور که از نامش پیداست میتواند مولفههای اصلی را شناسایی کند و به ما کمک میکند تا به جای اینکه تمامیِ ویژگیها را مورد بررسی قرار دهیم، یک سری ویژگیهایی را ارزشِ بیشتری دارند، تحلیل کنیم. در واقع PCA آن ویژگیهایی را که ارزش بیشتری فراهم میکنند برای ما استخراج میکند (اگر نمیدانید ویژگی یا بُعد چیست، حتما درس ویژگی چیست را خوانده باشید).
اجازه بدهید با یک مثال شروع کنیم. فرض کنید یک فروشگاه میخواهد ببیند که رفتار مشتریانش در خریدِ یک محصول خاص (مثلا یک کفش خاص) چطور بوده است. این فروشگاه، اطلاعات زیادی از هر فرد دارد (همان ویژگیهای آن فرد). برای مثال این فروشگاه، از هر مشتری ویژگیهای زیر را جمعآوری کرده است:
سن، قد، جنسیت، محل تولد شخص (غرب ایران، شمال ایران، شرق ایران یا جنوب ایران)، میانگین تعداد افراد خانواده، میانگین درآمد، اتومبیل شخصی دارد یا خیر و در نهایت اینکه این شخص بعد از بازدید کفش خریده است یا خیر. ۷ویژگیِ اول ابعاد مسئله ما را میساختند و ویژگیِ آخر هدف (Target) میباشد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
یکی از کاربردهای اصلیِ PCA در عملیاتِ کاهشِ ویژگی (Dimensionality Reduction) است. PCA همانطور که از نامش پیداست میتواند مولفههای اصلی را شناسایی کند و به ما کمک میکند تا به جای اینکه تمامیِ ویژگیها را مورد بررسی قرار دهیم، یک سری ویژگیهایی را ارزشِ بیشتری دارند، تحلیل کنیم. در واقع PCA آن ویژگیهایی را که ارزش بیشتری فراهم میکنند برای ما استخراج میکند (اگر نمیدانید ویژگی یا بُعد چیست، حتما درس ویژگی چیست را خوانده باشید).
اجازه بدهید با یک مثال شروع کنیم. فرض کنید یک فروشگاه میخواهد ببیند که رفتار مشتریانش در خریدِ یک محصول خاص (مثلا یک کفش خاص) چطور بوده است. این فروشگاه، اطلاعات زیادی از هر فرد دارد (همان ویژگیهای آن فرد). برای مثال این فروشگاه، از هر مشتری ویژگیهای زیر را جمعآوری کرده است:
سن، قد، جنسیت، محل تولد شخص (غرب ایران، شمال ایران، شرق ایران یا جنوب ایران)، میانگین تعداد افراد خانواده، میانگین درآمد، اتومبیل شخصی دارد یا خیر و در نهایت اینکه این شخص بعد از بازدید کفش خریده است یا خیر. ۷ویژگیِ اول ابعاد مسئله ما را میساختند و ویژگیِ آخر هدف (Target) میباشد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
یک متد بازگشتی بنویسید که n را بگیرد و الگوی زیر را چاپ کند:
n, n-5, n-10, …, 0, 5, 10, …, n-5, n
مثال : برای n=16 به صورت زیر می باشد:
16, 11, 6, 1, -4, 1, 6, 11, 16
متد باز گشتی آن به صورت زیر می باشد :
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
n, n-5, n-10, …, 0, 5, 10, …, n-5, n
مثال : برای n=16 به صورت زیر می باشد:
16, 11, 6, 1, -4, 1, 6, 11, 16
متد باز گشتی آن به صورت زیر می باشد :
def print_pattern(n):
if n > 0:
print(n)
print_pattern(n-5)
print(n)
else:
print(n)
print_pattern(16)
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
نورون پرسپترون یک نوع سلول عصبی مصنوعی است که به عنوان یک واحد پردازشی در شبکههای عصبی مصنوعی استفاده میشود. کارکرد اصلی یک نورون پرسپترون به این صورت است:
1. ورودی: نورون پرسپترون یک یا چند ورودی دارد که هر کدام میتوانند مقادیر باینری (0 یا 1) باشند. این ورودیها را میتوان به صورت زیر نمایش داد.
x1, x2 , ... , x3
2. وزنها: هر ورودی با یک وزن مرتبط است ( w1,w2 , ... ,wn). این وزنها نشان دهنده اهمیت ورودیهای مختلف برای خروجی نورون هستند.
3. جمعبندی: ورودیها در کنار وزنهایشان ضرب میشوند و حاصل آنها جمع میشود:
sum = w1*x1 + w2*x2 + + ... + wn*xn
4. تابع فعالسازی: جمع بدست آمده از مرحله قبل از طریق یک تابع فعالسازی (activation function) میگذرد. در گذشته، تابع فعالسازی از نوع تابع گام بوده است، اما امروزه توابعی مانند تابع سیگموئید یا ReLU رایجتر هستند. هدف از استفاده از تابع فعالسازی، وارد کردن عدم خطیت به خروجی است.
5. خروجی: نتیجهی تابع فعالسازی، خروجی نورون پرسپترون است.
به صورت ریاضی، خروجی y نورون پرسپترون به صورت زیر محاسبه میشود:
activation_function(sum) = y
نورون پرسپترون میتواند برای وظایف سادهترین دستهبندی باینری استفاده شود. با تنظیم وزنها و عبارت وابسته، یک نورون پرسپترون میتواند یاد بگیرد که دادههای ورودی را به دو دسته تقسیم کند.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
1. ورودی: نورون پرسپترون یک یا چند ورودی دارد که هر کدام میتوانند مقادیر باینری (0 یا 1) باشند. این ورودیها را میتوان به صورت زیر نمایش داد.
x1, x2 , ... , x3
2. وزنها: هر ورودی با یک وزن مرتبط است ( w1,w2 , ... ,wn). این وزنها نشان دهنده اهمیت ورودیهای مختلف برای خروجی نورون هستند.
3. جمعبندی: ورودیها در کنار وزنهایشان ضرب میشوند و حاصل آنها جمع میشود:
sum = w1*x1 + w2*x2 + + ... + wn*xn
4. تابع فعالسازی: جمع بدست آمده از مرحله قبل از طریق یک تابع فعالسازی (activation function) میگذرد. در گذشته، تابع فعالسازی از نوع تابع گام بوده است، اما امروزه توابعی مانند تابع سیگموئید یا ReLU رایجتر هستند. هدف از استفاده از تابع فعالسازی، وارد کردن عدم خطیت به خروجی است.
5. خروجی: نتیجهی تابع فعالسازی، خروجی نورون پرسپترون است.
به صورت ریاضی، خروجی y نورون پرسپترون به صورت زیر محاسبه میشود:
activation_function(sum) = y
نورون پرسپترون میتواند برای وظایف سادهترین دستهبندی باینری استفاده شود. با تنظیم وزنها و عبارت وابسته، یک نورون پرسپترون میتواند یاد بگیرد که دادههای ورودی را به دو دسته تقسیم کند.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
فرض کنید n رشته ي متمایز از صفر و یک داریم، طول بزرگترین رشته k است. از درخـت تراي براي نگهداري این رشته ها استفاده شده است. ارتفاع درخت تـراي از چـه مرتبـه اي می باشد؟
Anonymous Quiz
22%
K
22%
Log n
42%
Log n + k
15%
Log k
This media is not supported in your browser
VIEW IN TELEGRAM
دموی الگوریتم *A
در واقع در الگورتیم A* بیشتر در جهت هدف گسترش پیدا میکنید برای همین است که اگر ما یک هیوریستیک قابل قبول و سازگاری داشته باشید یک الگوریتم بهینه ایی برای رسیدن به هدف پیدا شده است اگر شرایطی که گفتیم بر قرار باشد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
در واقع در الگورتیم A* بیشتر در جهت هدف گسترش پیدا میکنید برای همین است که اگر ما یک هیوریستیک قابل قبول و سازگاری داشته باشید یک الگوریتم بهینه ایی برای رسیدن به هدف پیدا شده است اگر شرایطی که گفتیم بر قرار باشد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
😍4
مثالی از الگوریتم MAX-HEAPIFY که ابتدا آرایه A را وارد یک درخت میکنیم سپس با استفاده جابه جایی که در درخت صورت گرفته در آخر هم آرایه مرتب شده به دست می آید.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Exams_Ai_@AlgorithmDesign_DataStructuer.rar
24.8 MB
سوالات میان ترم و پایانی هوش مصنوعی دانشگاه Toronto کانادا
اگر مشکلی در حل سوالات داشتید میتونید از ادمین کانال کمک بگیرید.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
اگر مشکلی در حل سوالات داشتید میتونید از ادمین کانال کمک بگیرید.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
اگر n عنصر نامرتب داشته باشیم میتوان k عنصر بعد از median را به صـورت مرتـب در پیچیدگی زمانی زیر چاپ کرد:
Anonymous Poll
16%
Kn
44%
K log n
25%
n + k log k
16%
n + k log n
✅برخی از تعریف ها در مورد گراف که لازم است به یاد داشته باشیم :
⬅️گراف متصل : گرافی که بین هر دو گره مسیری وجود داشته باشد را گراف متصل گویند.
⬅️گراف غیر متصل : گرافی است که حداقل بین دو گره آن هیچ مسیر وجود نداشته باشد. شرط لازم برای اینکه گرافی با n گره متصل باشد این است که حداقل 1 - n یال وجود داشته باشد.
⬅️گراف تهی : گرافی است که مجموعهای از گرهها باشد و هیچ یالی بین گرهها وجود نداشته باشد.
⬅️درجه هر گره : تعداد یالهایی که از یک گره عبور میکند را درجه آن گره گویند.
❗️تذکر : درجـه خروجی برای گرافهای جهتدار تعداد یالهای خارج شده از یک گره را نشان میدهد و درجه ورودی برای گرافهای جهتدار تعداد یالهایی که به یک گره وارد شدهاند میباشد. مجمـع درجـات گـرههـا در گرافهای بدون جهت دو برابر تعداد یالهاست و مجموع درجات ورودی یا مجموع درجات خروجی در گرافهای جهتدار تعداد یالها را نشان میدهد.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
⬅️گراف متصل : گرافی که بین هر دو گره مسیری وجود داشته باشد را گراف متصل گویند.
⬅️گراف غیر متصل : گرافی است که حداقل بین دو گره آن هیچ مسیر وجود نداشته باشد. شرط لازم برای اینکه گرافی با n گره متصل باشد این است که حداقل 1 - n یال وجود داشته باشد.
⬅️گراف تهی : گرافی است که مجموعهای از گرهها باشد و هیچ یالی بین گرهها وجود نداشته باشد.
⬅️درجه هر گره : تعداد یالهایی که از یک گره عبور میکند را درجه آن گره گویند.
❗️تذکر : درجـه خروجی برای گرافهای جهتدار تعداد یالهای خارج شده از یک گره را نشان میدهد و درجه ورودی برای گرافهای جهتدار تعداد یالهایی که به یک گره وارد شدهاند میباشد. مجمـع درجـات گـرههـا در گرافهای بدون جهت دو برابر تعداد یالهاست و مجموع درجات ورودی یا مجموع درجات خروجی در گرافهای جهتدار تعداد یالها را نشان میدهد.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍1👏1
⁉️شاید تا الان براتون سوال پیش آماده باشد که Bias که در فرمول شبکه های عصبی هست چه طور به وجود می آید؟
اگر به شکل بالا دقت کنید دو شکلی میبینید که یکی از آن ها عرض از مبدا (C) ندارد و یکی از آن ها دارد اگر معادله خط به صورت زیر باشد :
y = mx + c
که در آن m شیب خط و x که دیتا های ورودی می باشد میتوان آن را به این صورت بیان کرد که :
m = weight
c = bias
که میتوان نوشت :
y = weight * x + bias
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
اگر به شکل بالا دقت کنید دو شکلی میبینید که یکی از آن ها عرض از مبدا (C) ندارد و یکی از آن ها دارد اگر معادله خط به صورت زیر باشد :
y = mx + c
که در آن m شیب خط و x که دیتا های ورودی می باشد میتوان آن را به این صورت بیان کرد که :
m = weight
c = bias
که میتوان نوشت :
y = weight * x + bias
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍2👏1