Greedy_knapack(n,W, p[1…n], w[1…n])
{
x=0; profit=0;
rw=W
for i=1 to n do
{
if wi<rw then
x[i]=1;
rw=rw-wi;
else
break;
}
x[i]= 𝑟𝑤/𝑤𝑖;
profit= profit+p[i]*x[i];
}
الگوریتم کولهپشتی کسری (Fractional Knapsack Algorithm) یک الگوریتم زمان واقعی و محاسباتی برای حل مسئله کولهپشتی است. در این مسئله، ما یک کولهپشتی داریم که ظرفیت مشخصی دارد و میخواهیم اجناسی را درون آن بگذاریم بهطوری که ارزش کلی اجناس درون کولهپشتی بیشینه شود. هر جنس دارای وزن و ارزش مشخصی است.
الگوریتم کولهپشتی کسری به این صورت است:
1. محاسبه نسبت ارزش به وزن (value/weight) برای هر جنس.
2. مرتب کردن اجناس بر اساس این نسبت.
3. از اجناس با بیشترین نسبت ارزش به وزن شروع به گذاشتن درون کولهپشتی میکنیم. اگر میتوانیم همهی اجناس را بگیریم، آنگاه همهی آنها را میگیریم. در غیر این صورت، قسمتی از آخرین جنسی که میتوانیم درون کولهپشتی قرار دهیم را قطعهبندی میکنیم و به صورت جزئی از آن را میگذاریم.
الگوریتمی بالا این الگوریتم به ازای هر جنس، محاسبه میکند که چقدر از آن جنس میتواند بگیرد و این کار را به ترتیب جنسها انجام میدهد. در نهایت، مقدار سود کلی که میتوان با قراردادن اجناس داخل کولهپشتی بدست آورد، محاسبه میشود.
این الگوریتم در مسائلی که بهینهسازی نسبت به جمعیت جوابها کارآمد است، اما در برخی موارد ممکن است بهینه نباشد.
مرتبه زمانی این الگوریتم O(n log n) می باشد.
📣👨💻 @AlgorithmDesign_DataStructuer
💯2
import torch
# Scalar
scalar = torch.tensor(7)
print(scalar)
# Vector
vector = torch.tensor([7 , 4])
print(vector)
# Matrix
matrix = torch.tensor([[7, 10], [4, 3] , [5, 1]])
print(matrix)
# Tensor
tensor = torch.tensor([[[1, 2, 3],
[3, 6, 9],
[2, 4, 5]]])
print(tensor)
با استفاده از کتابخانه torch می توانیم به راحتی 4 عمل بالا را نیز انجام دهیم که در شبکه های عصبی بسیار زیاد از این 4 عمل نیز استفاده می شود.
📣👨💻 @AlgorithmDesign_DataStructuer
👍3
به دست آوردن تعداد سیکل های ساده در یک گراف مسطح با الگوریتمی با درجه ......... قابل محاسبه است.
Anonymous Quiz
11%
1
39%
n
38%
n^2
12%
2^n
def reverse_sum(n , m):
if n <= 1 or m <= 1:
return 1
return n+m*reverse_sum(n-1 , m // 2)
print(reverse_sum(2 ,3))
output 5
کد بازگشتی حاصل جمع دو عدد n و m
📣👨💻 @AlgorithmDesign_DataStructuer
مراحل الگوریتم کروسکال (Kruskal's algorithm)
1️⃣یال ها را به ترتیب صعودی وزن در نظر بگیر.
2️⃣کم وزن ترین یال باقیمانده را به درخت T اضافه کن , مگر آنکه این کار باعث اینجاد دور شود.
🚨به مثال بالا توجه کنید.
📣👨💻 @AlgorithmDesign_DataStructuer
1️⃣یال ها را به ترتیب صعودی وزن در نظر بگیر.
2️⃣کم وزن ترین یال باقیمانده را به درخت T اضافه کن , مگر آنکه این کار باعث اینجاد دور شود.
🚨به مثال بالا توجه کنید.
📣👨💻 @AlgorithmDesign_DataStructuer
import numpy as np
A = np.array([[1 , 2] , [3 , 4] , [5 , 6]])
B = np.array([[2 , 1] , [0 , 1] , [3 ,2]])
C = A + B
print("sum of arrays A and B is : ", C)
sum of arrays A and B is : [[3 3]
[3 5]
[8 8]]
مجموع دو ماتریس با استفاده از کتاب خانه numpy
📣👨💻 @AlgorithmDesign_DataStructuer
مرتبه زمانی الگوریتم هاي kruskul و prim براي یافتن درخت پوشاي کمینه یک گراف بـا n راس و e یال به ترتیب از چپ به راست کدام است؟
Anonymous Quiz
36%
O(eloge) , O(n^2)
41%
O(n^2) , O(eloge)
23%
O(eloge) , O(eloge)
0%
O(n^2) , O(n^2)
رابطه بازگشتی فیبوناچی یک رابطه همگن می باشد که آن را میتوان به صورت معادله درجه دوم نوشت و پس از به دست آوردن ریشه های آن میتوان اعداد فیبوناچی را با رابطه بسیار ساده تر و کم هزینه تر به دست آورد.
📣👨💻 @AlgorithmDesign_DataStructuer
📣👨💻 @AlgorithmDesign_DataStructuer
import numpy as np
a = np.array([[0.45053314, 0.17296777, 0.34376245, 0.5510652],
[0.54627315, 0.05093587, 0.40067661, 0.55645993],
[0.12697628, 0.82485143, 0.26590556, 0.56917101]])
# Sum of all elements
print(a.sum())
output = 4.8595784
# Find the minimum value
print(a.min())
output = 0.05093587
# Find the maximum value
print(a.max())
output = 0.82485143
# Find the mean value
print(a.mean())
output = 0.40496518
sum:
⬅️این محاسبه مجموع تمام عناصر موجود در آرایه را انجام می دهد.
main:
⬅️این محاسبه مقدار کمینه در آرایه را انجام می دهد.
max:
⬅️این محاسبه مقدار بیشینه در آرایه را انجام می دهد.
mean:
⬅️این محاسبه میانگین تمام عناصر در آرایه را انجام می دهد.
📣👨💻 @AlgorithmDesign_DataStructuer
👍3
اگر A آرایه ای مرتب از اعداد صحیح 1 الی 1024 باشد ، الگوریتم جستجوی دودیی با چند بار تکرار عدد 4 را پیدا میکند؟
Anonymous Quiz
17%
7
40%
8
18%
9
25%
10
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()
این کد یک نمودار ساده از یک لیست اعداد را ایجاد می کند. در اینجا، مقادیر [1، 2، 3، 4] به عنوان محور x و شماره های متناظر با آن به عنوان محور y استفاده شده است. سپس با فراخوانی تابع
plt.ylabel('some numbers')
برای تعیین برچسب محور y و plt.show()
برای نمایش نمودار، نمودار نهایی رسم می شود.📣👨💻 @AlgorithmDesign_DataStructuer
معرفی کانال های یوتیوب برای یادگیری ریاضی📝
اگر میخواهید در زمینه هوش مصنوعی کار کنید , باید پایه ریاضی خوبی داشته باشید زیرا بیشتر چیز هایی که در هوش وجود دارد همگی از ریاضی سر رشته گرفته اند برای همین باید ریاضی رو به حدی برسانید که بتوانید ریاضی به کار رفته در هوش مصنوعی را درک کنید.
🌐 ProfRobBob
🌐 3Blue1Brown
🌐 Ghrist Mat
🌐 DataHub
📣👨💻 @AlgorithmDesign_DataStructuer
اگر میخواهید در زمینه هوش مصنوعی کار کنید , باید پایه ریاضی خوبی داشته باشید زیرا بیشتر چیز هایی که در هوش وجود دارد همگی از ریاضی سر رشته گرفته اند برای همین باید ریاضی رو به حدی برسانید که بتوانید ریاضی به کار رفته در هوش مصنوعی را درک کنید.
🌐 ProfRobBob
🌐 3Blue1Brown
🌐 Ghrist Mat
🌐 DataHub
📣👨💻 @AlgorithmDesign_DataStructuer
👌2💯1
براي ادغام لیست هاي مرتب شده...وL1,L2,L3 کدام یک از ساختار داده های زیر(علاوه بر لیست های ورودی) بهترین است؟
Anonymous Quiz
30%
درخت Min-Heap
17%
آرایه خطی
27%
لیست دو طرفه خطی
25%
درخت دودیی جستجو
با احترام و خوشآمدگویی به شما عزیزان 👋🏻😃
از دوستان گرامی که اشتراک Premium در تلگرام دارند، دعوت میشود که از حمایت خود از کانال ما استفاده کنند و با Boost کردن کانال، از امکانات ویژهای که برای شما عزیزان در اختیار کانال قرار میگیرد، بهرهمند شویم. با این اقدام، بهترین تجربه را برای شما فراهم میکنیم و از حضور گرمتان سپاسگزاریم. با تشکر از حمایت و همراهی شما 🙏
https://t.me/boost/AlgorithmDesign_DataStructuer
از دوستان گرامی که اشتراک Premium در تلگرام دارند، دعوت میشود که از حمایت خود از کانال ما استفاده کنند و با Boost کردن کانال، از امکانات ویژهای که برای شما عزیزان در اختیار کانال قرار میگیرد، بهرهمند شویم. با این اقدام، بهترین تجربه را برای شما فراهم میکنیم و از حضور گرمتان سپاسگزاریم. با تشکر از حمایت و همراهی شما 🙏
https://t.me/boost/AlgorithmDesign_DataStructuer
Telegram
Algorithm design & data structure
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
🤔2💯2👍1
def is_balanced(expression):
stack = []
opening_brackets = {'(', '[', '{'}
closing_brackets = {')', ']', '}'}
bracket_pairs = {'(': ')', '[': ']', '{': '}'}
for char in expression:
if char in opening_brackets:
stack.append(char)
elif char in closing_brackets:
if not stack:
return False # Unmatched closing bracket
top = stack.pop()
if bracket_pairs[top] != char:
return False # Mismatched opening and closing brackets
return not stack # Expression is balanced if stack is empty
# Example usage:
expression1 = "((2 + 3) * [4 - 1])" # Balanced expression
expression2 = "{[2 * (3 + 4)] / (5 - 1)}" # Balanced expression
expression3 = "({[2 + 3] * 4}" # Unbalanced expression
print(is_balanced(expression1)) # Output: True
print(is_balanced(expression2)) # Output: True
print(is_balanced(expression3)) # Output: False
✅بررسی براکت های متوازن در یک عبارت یک مشکل رایج در علوم کامپیوتر و برنامه نویسی است، به ویژه در زمینه تجزیه و تفسیر زبان ها. هدف این است که تعیین کنیم آیا یک عبارت داده شده دارای جفت پرانتز تو در تو است (مانند پرانتز ()، پرانتز []، یا پرانتز مجعد {}). اگر براکت ها متعادل باشند، به این معنی است که هر براکت بازکننده دارای یک براکت بسته کننده مربوطه است و به درستی و بدون هیچ گونه همپوشانی تودرتو شده اند.
در اینجا یک توضیح اساسی در مورد نحوه برخورد با این مشکل آورده شده است:
1️⃣-تکرار از طریق عبارت: با تکرار از طریق هر یک از کاراکترهای عبارت، از چپ به راست شروع کنید.
2️⃣-از یک ساختار داده پشته استفاده کنید: همانطور که عبارت را تکرار می کنید، از یک پشته برای پیگیری براکت های باز که با آنها روبرو می شوید استفاده کنید. هر زمان که با یک براکت باز (مانند '('، '['، یا '{') مواجه شدید، آن را روی پشته فشار دهید.
3️⃣-بررسی بسته شدن براکت: وقتی با یک براکت بسته (')'، ']'، یا '}' مواجه شدید، بررسی کنید که آیا پشته خالی است. اگر اینطور باشد، هیچ براکت باز منطبقی برای براکت بسته شدن فعلی وجود ندارد، که نشان میدهد عبارت نامتعادل است. در غیر این صورت، عنصر بالایی را از پشته بیرون بیاورید و آن را با براکت بسته فعلی مقایسه کنید. اگر مطابقت نداشته باشند (به عنوان مثال، '(' با ']' مطابقت ندارد)، در این صورت عبارت نامتعادل است.
4️⃣-تا پایان عبارت ادامه دهید: مراحل 2 و 3 را تکرار کنید تا زمانی که تمام کاراکترهای عبارت را پردازش کنید.
5️⃣-بررسی پشته: پس از پردازش همه کاراکترها، بررسی کنید که آیا پشته خالی است. اگر خالی باشد، تمام براکت های باز با براکت های بسته مطابقت داده شده اند و عبارت متعادل است. در غیر این صورت، پرانتزهای باز بیهمتا باقی مانده است که بیانگر یک عبارت نامتعادل است.
📣👨💻 @AlgorithmDesign_DataStructuer
👍7
def quotient( n , d ):
if n <= d:
return 0
return 1 + quotient(n-d, d)
print(quotient( 10 , 3))
کد بازگشتی تقسیم صحیح دو عدد n و d
📣👨💻 @AlgorithmDesign_DataStructuer
⬅️واریانس(Variance):
واریانس یک مجموعه داده اندازه گیری می کند که نقاط داده چقدر با میانگین تفاوت دارند.
با گرفتن میانگین مجذور اختلاف بین هر نقطه داده و میانگین محاسبه می شود.
از نظر ریاضی، واریانس به صورت (σ²) نمایش داده می شود.
◀️انحراف معیار(Standard Deviation):
انحراف معیار جذر واریانس است.
میانگین انحراف نقاط داده را از میانگین اندازه گیری می کند.
انحراف استاندارد مفید است زیرا معیاری از پراکندگی داده ها را در واحدهای خود داده ارائه می دهد و تفسیر آن را آسان تر می کند.
از نظر ریاضی، انحراف معیار به صورت (σ) نمایش داده می شود.
📣👨💻 @AlgorithmDesign_DataStructuer
واریانس یک مجموعه داده اندازه گیری می کند که نقاط داده چقدر با میانگین تفاوت دارند.
با گرفتن میانگین مجذور اختلاف بین هر نقطه داده و میانگین محاسبه می شود.
از نظر ریاضی، واریانس به صورت (σ²) نمایش داده می شود.
◀️انحراف معیار(Standard Deviation):
انحراف معیار جذر واریانس است.
میانگین انحراف نقاط داده را از میانگین اندازه گیری می کند.
انحراف استاندارد مفید است زیرا معیاری از پراکندگی داده ها را در واحدهای خود داده ارائه می دهد و تفسیر آن را آسان تر می کند.
از نظر ریاضی، انحراف معیار به صورت (σ) نمایش داده می شود.
📣👨💻 @AlgorithmDesign_DataStructuer
ماکسیمم تعداد مقایسه براي min-heap کردن یک max-heap با n گره برابر است با:
Anonymous Quiz
19%
n+log n
36%
log n
36%
nlog n
9%
2n