Algorithm design & data structure
6.68K subscribers
1.02K photos
146 videos
175 files
607 links
این کانال برای تمامی علاقه‌مندان به کامپیوتر، مخصوصاً حوزه ساختمان داده‌ها و الگوریتم‌ها، مفید می باشد. آشنایی با ریاضیات مقدماتی، برنامه‌نویسی مقدماتی و پیشرفته و همچنین شی‌گرایی می‌تواند در درک بهتر مفاهیم این درس کمک‌ کند.

👨‍💻Admin👉 @Se_mohamad
Download Telegram
در يك درخت جستجوي دودويي با n گره، تعداد مقايسه براي جستجوي يك، عنصر حداكثر برابر است بـا :
Anonymous Quiz
14%
O(n/2)
36%
O(n)
14%
O(n^2)
37%
O(nlogn)
👍6👨‍💻1
سلام دوستان عزیز 😃 امیدوارم این مطلب رو بخونی یکم بهت انگیزه بهت و بدونی که همه زندگی توی درس خلاصه نمیشه.


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

#انگیزشی

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍19🎉3🤩3👏2🙏2
در مرتب سازی QuickSort پیچیدگی زمانی در بدترین پیچیدگی آن چه قدر است ؟
Anonymous Quiz
12%
O(n)
50%
O(n^2)
28%
O(nlogn)
10%
O(logn)
👍7👨‍💻4
یک الگوریتم مرتب سازی مقایسه ای است که با استفاده از تقسیم و حل، آرایه را به صورت صعودی (Ascending) یا نزولی (Descending) مرتب می کند.

ابتدا، تابع partition برای پیدا کردن جایگاه تقسیم آرایه به دو قسمت، چپ و راست، با استفاده از pivot (عنصر اصلی) پایین و بالاتر از pivot تعریف شده است. در این تابع، i به عنوان نشانگر عنصر بزرگتر و j به عنوان نشانگر عنصر کوچکتر در آرایه تعریف شده است. در هنگام حلقه for، همه عناصر با pivot مقایسه شده و در صورت بودن عضو کوچک‌تر از pivot، جابجایی با i صورت می‌گیرد. در نهایت، pivot با عنصر بزرگتری که توسط i نشان داده شده است، جابجا می شود و جایگاه تقسیم برگشت داده می شود.

در تابع quickSort، ابتدا pivot پیدا می شود و سپس آرایه به دو قسمت تقسیم می شود. سپس، هر قسمت به صورت بازگشتی با استفاده از quickSort مرتب می شود. در نهایت، آرایه به صورت صعودی مرتب شده و چاپ می‌شود.


پیچیدگی زمانی این الگوریتم در بدترین , متوسط و بهترین حالت به صورت زیر می باشد:
Worst: O(n2)
Average: O(n*log n)
Best: O(n*log n)

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2👌2👨‍💻2
👨‍💻4
کدام گزینه صحیح می باشد؟
Anonymous Quiz
12%
1
15%
2
60%
3
12%
4
👍6🎉2👨‍💻1
تفاوت درخت باینری و درخت عمومی

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍3👌2👨‍💻1
کدام یک از گزینه های زیر تقریبا برابر است با عبارت زیر:

log n!
Anonymous Quiz
49%
O(nlogn)
24%
O(n^2)
9%
O(n)
18%
O(logn)
👍5👨‍💻3🤔2🔥1
👨‍💻4
کدام گزینه صحیح می باشد؟
Anonymous Quiz
10%
1
35%
2
40%
3
15%
4
👍8👨‍💻4
در یک درخت سه تایی (درخت با درجه حداکثر سه) با عمق۵، حداکثر چند گره وجود دارد؟(ریشه در عمق یک)
Anonymous Quiz
40%
121
24%
242
29%
120
6%
25
👍5🔥1🤔1👨‍💻1
الگوریتم کد گذاری هافمن (Huffman Coding):


کدگذاری هافمن یک الگوریتم فشرده سازی داده بدون تلفات است. ایده این است که کدهای با طول متغیر را به کاراکترهای ورودی اختصاص دهیم، طول کدهای اختصاص داده شده بر اساس فرکانس کاراکترهای مربوطه است.
کدهای با طول متغیر اختصاص داده شده به کاراکترهای ورودی، کدهای پیشوندی هستند، یعنی کدها (توالی بیت ها) به گونه ای تخصیص داده می شوند که کد اختصاص داده شده به یک کاراکتر، پیشوند کد اختصاص داده شده به کاراکتر دیگری نباشد. به این ترتیب کدینگ هافمن مطمئن می شود که هنگام رمزگشایی بیت استریم تولید شده هیچ ابهامی وجود ندارد.
اجازه دهید کدهای پیشوند را با یک مثال شمارنده درک کنیم. بگذارید چهار کاراکتر a، b، c و d وجود داشته باشد و کدهای طول متغیر متناظر آنها 00، 01، 0 و 1 باشد. این کدگذاری منجر به ابهام می شود زیرا کد اختصاص داده شده به c پیشوند کدهای اختصاص داده شده به a و b است. اگر جریان بیت فشرده 0001 باشد، خروجی فشرده شده ممکن است "cccd" یا "ccb" یا "acd" یا "ab" باشد.

📣👨‍💻 @AlgorithmDesign_DataStructuer
👏7👍3🔥1👨‍💻1
در کدام نوع درخت های دودویی همه گره ها به جز گره های سطح آخر ماکزیمم تعداد فرزندان را دارد؟
Anonymous Quiz
34%
درخت پر
18%
درخت دودویی
39%
درخت دودویی کامل
10%
درخت متوارن
👍5🎉1👨‍💻1
نکته در مورد درخت پر

📣👨‍💻 @AlgorithmDesign_DataStructuer
👏4👍2👨‍💻1
کدام یک از گزینه های زیر می باشد؟
Anonymous Quiz
32%
1
43%
2
21%
3
5%
4
👨‍💻4💯3
ماتریس اسپارس (ماتریس تُنُک) چیست؟

ماتریس اسپارس یک مورد خاص از ماتریس است که در آن تعداد عناصر صفر بسیار بیشتر از تعداد عناصر غیر صفر است. به عنوان یک قاعده کلی، اگر 2/3 از کل عناصر یک ماتریس صفر باشد، می توان آن را ماتریس پ اسپارس نامید. با استفاده از نمایش ماتریس اسپارس- جایی که فقط مقادیر غیر صفر ذخیره می شوند - فضای مورد استفاده برای نمایش داده ها و زمان اسکن ماتریس به طور قابل توجهی کاهش می یابد. این آرایه معمولا در آرایه دو بعدی ذخیزه می شود که میتوان گفت نوعی ساختار داده ایی می باشد که به واقع فضای مورد نیاز برای ذخیره سازی آن را نیز بیان می کند(سطر و ستون).

مثال:
بیایید یک سیستم توصیه فیلم را مثال بزنیم. میلیون ها کاربر و هزاران فیلم وجود دارد، بنابراین امکان تماشای و رتبه بندی همه فیلم ها برای کاربران وجود ندارد. این داده ها را می توان به عنوان یک ماتریس نشان داد که در آن ردیف ها کاربران و ستون ها فیلم هستند. در تصویر بالا میتوانید آن را مشاهده کنید.

یکی دیگر از کاربرد های این ماتریس در زمینه یادگیری ماشین می باشد.

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍9🔥1👨‍💻1
کدام یک از گزینه های زیر می باشد؟
Anonymous Quiz
5%
1
44%
2
24%
3
26%
4
🤔8👨‍💻5👍1
برای اینکه توانیم بفهمیم رشد کدام یک ار توابع gوf بیشتر است میتوانیم از حد استفاده کنیم راه های دیگری هم وجود دارد ولی با استفاد از حد شما میتوانید رشد همه توابع را حساب کنید.
نکته : البته رشد توابع برای توابعی می باشد که صعودی می باشند و برای توابع نزولی ما رشیدی را تعریف نمی کنیم.

📣👨‍💻 @AlgorithmDesign_DataStructuer
🙏2👨‍💻2🤔1