چه تعداد درخت دودویی برچسبدارمتفاوت با 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
فرض کنید که ماکزیمم – هیپ حاوي اعداد متمایز 1 تا 1023 است. حداکثر چند تا از اعداد بیشتر از 1000 میتواند در پایین ترین سطح درخت قرار گیرند؟
Anonymous Quiz
24%
10
40%
12
21%
13
14%
14
تابع هش (Hash Function) در ساختمان داده، به عنوان یکی از عناصر اصلی استفاده میشود. این تابع، ورودیهای مختلف را به یک مقدار خروجی (معمولاً یک عدد) نگاشت میکند. هدف اصلی این تابع، تولید یک مقدار هش یکتا برای هر ورودی است، به طوری که اگر دو ورودی متفاوت باشند، مقدار هش آنها نیز با احتمال بسیار زیاد متفاوت باشد.
توابع هش به طور گسترده در ساختمان دادهها مانند جدول هش (Hash Table) استفاده میشوند. در جدول هش، مقادیر ورودی (کلیدها) به عنوان ورودی به تابع هش داده میشوند و مقادیر خروجی (معمولاً اعداد صحیح) به عنوان شاخصها یا آدرسهای جایگزین در جدول هش استفاده میشوند.
یکی از ویژگیهای اصلی تابع هش، باید سریع و کارآمد باشد و باید بتواند مقدار هش را برای ورودیهای مختلف با سرعت بالا محاسبه کند. همچنین، تابع هش باید توزیع یکنواختی داشته باشد، به این معنی که برای ورودیهای مختلف، مقادیر هش به طور یکنواخت پخش شوند، تا اینکه تمامی اندازههای جدول هش برابر احتمالی برای ظاهر شدن دادهها باشند.
مثالی از یک تابع هش ساده میتواند تابع ماژول گیری باشد که میتواند عدد ورودی را بر اساس یک مقدار ثابت مانند اندازه جدول هش به مقدار هش تبدیل کند. به عنوان مثال، اگر اندازه جدول هش را ( n ) در نظر بگیریم، میتوانیم تابع هش را به صورت زیر تعریف کنیم:
h(x) = n mod x
این تابع هش، عدد ورودی ( x) را به یک عدد بین ۰ تا ( n-1 ) نگاشت میکند. این تابع هش به سرعت قابل محاسبه است و توزیع یکنواختی دارد. اما باید توجه داشت که تابع هشهای ساده مانند تابع ماژول گیری، برای برخی موارد ممکن است به دلیل توزیع ناهمگن دادهها، بهینه نباشند. در مواردی مانند این، توابع هش پیچیدهتری مانند توابع هش کریپتوگرافیکی استفاده میشوند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
توابع هش به طور گسترده در ساختمان دادهها مانند جدول هش (Hash Table) استفاده میشوند. در جدول هش، مقادیر ورودی (کلیدها) به عنوان ورودی به تابع هش داده میشوند و مقادیر خروجی (معمولاً اعداد صحیح) به عنوان شاخصها یا آدرسهای جایگزین در جدول هش استفاده میشوند.
یکی از ویژگیهای اصلی تابع هش، باید سریع و کارآمد باشد و باید بتواند مقدار هش را برای ورودیهای مختلف با سرعت بالا محاسبه کند. همچنین، تابع هش باید توزیع یکنواختی داشته باشد، به این معنی که برای ورودیهای مختلف، مقادیر هش به طور یکنواخت پخش شوند، تا اینکه تمامی اندازههای جدول هش برابر احتمالی برای ظاهر شدن دادهها باشند.
مثالی از یک تابع هش ساده میتواند تابع ماژول گیری باشد که میتواند عدد ورودی را بر اساس یک مقدار ثابت مانند اندازه جدول هش به مقدار هش تبدیل کند. به عنوان مثال، اگر اندازه جدول هش را ( n ) در نظر بگیریم، میتوانیم تابع هش را به صورت زیر تعریف کنیم:
h(x) = n mod x
این تابع هش، عدد ورودی ( x) را به یک عدد بین ۰ تا ( n-1 ) نگاشت میکند. این تابع هش به سرعت قابل محاسبه است و توزیع یکنواختی دارد. اما باید توجه داشت که تابع هشهای ساده مانند تابع ماژول گیری، برای برخی موارد ممکن است به دلیل توزیع ناهمگن دادهها، بهینه نباشند. در مواردی مانند این، توابع هش پیچیدهتری مانند توابع هش کریپتوگرافیکی استفاده میشوند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
در شکل بالا سرچ درختی را مشاهده میکنید که مبدا S و مقصد آن G نیز می باشد. برای انجام این کار ابتدا گراف را تبدیل به درخت میکنیم ( به صورتی باید تبدیل شود که دوری در آن به وجود نیاید) سپس با جست و جو هایی که در شکل مشاهده میکنید مسیر آن به صورت زیر نیز می باشد :
S -> d - > e -> r -> f -> G
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
S -> d - > e -> r -> f -> G
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👏1
سومین کوچکترین کلید در یک Heap Min با کلیدهاي متمـایز در درایـه هـایی بـا چـه اندیس هایی میتواند باشد؟(از چپ به راست)
Anonymous Quiz
22%
1,2,3
44%
2,3,4,5,6,7
27%
4,5,6,7
7%
1,2,3,4,5,6,7
👍1
زمان اجرای الگوریتم های معروف
نکاتی که میتوان درمورد زمان اجرای یک الگوریتم بدانیم به صورت زیر می باشد :
1-سرعت الگوریتم ن بر اساس ثانیه بلکه بر مبنای رشد تعداد عملیات اندازه گیری می شود.
2-در واقع , مقصود این است که با افزایش اندازه ی داده های ورودی زمان اجرای یک الگوریتم با چه سرعتی افزایش می یابد.
3-زمان اجرای الگوریتم های با نماد O بزرگ بیان می شود.
4-رشد O(log n) بیشتر از O(n) است , اما با رشد لیست موادی که جست و جو می کنید , سرعت آن بسیار بیشتر می شود.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
نکاتی که میتوان درمورد زمان اجرای یک الگوریتم بدانیم به صورت زیر می باشد :
1-سرعت الگوریتم ن بر اساس ثانیه بلکه بر مبنای رشد تعداد عملیات اندازه گیری می شود.
2-در واقع , مقصود این است که با افزایش اندازه ی داده های ورودی زمان اجرای یک الگوریتم با چه سرعتی افزایش می یابد.
3-زمان اجرای الگوریتم های با نماد O بزرگ بیان می شود.
4-رشد O(log n) بیشتر از O(n) است , اما با رشد لیست موادی که جست و جو می کنید , سرعت آن بسیار بیشتر می شود.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍1