تمرینات پایتون + سورس کد

با سلام خدمت خوانندگان عزیز ؛ در این مقاله قصد داریم تعدادی از مثال ها / کد ها و سورس های زبان برنامه نویسی python را به علاقه مندان این زبان برنامه نویسی قرار دهیم.

 

 

پیاده‌سازی الگوریتم A* برای جستجوی بهینه مسیر در یک شبکه.

 

الگوریتم A* یک الگوریتم جستجوی بهینه است که برای پیدا کردن مسیر کوتاهترین میان دو نقطه در یک شبکه استفاده می‌شود. در این الگوریتم، هر گره یا نقطه در شبکه دارای یک هزینه تخصیص داده می‌شود که معمولاً شامل هزینه حرکت از گره فعلی به گره هدف و هزینه تخصیص داده شده به گره فعلی است. برای پیاده‌سازی این الگوریتم در پایتون، می‌توانید از کد زیر استفاده کنید:

import heapq

def astar(graph, start, goal):
“””
الگوریتم A* برای پیدا کردن مسیر کوتاهترین میان دو نقطه در یک شبکه.
“””
frontier = []
heapq.heappush(frontier, (0, start))
came_from = {}
cost_so_far = {}
came_from[start] = None
cost_so_far[start] = 0

while frontier:
current = heapq.heappop(frontier)[1]

if current == goal:
break

for next_node in graph.neighbors(current):
new_cost = cost_so_far[current] + graph.cost(current, next_node)
if next_node not in cost_so_far or new_cost < cost_so_far[next_node]:
cost_so_far[next_node] = new_cost
priority = new_cost + graph.heuristic(next_node, goal)
heapq.heappush(frontier, (priority, next_node))
came_from[next_node] = current

return came_from, cost_so_far

 

در این کد، graph یک شیء از کلاس Graph است که شبکه را نمایش می‌دهد. start و goal نقاط شروع و پایان مسیر به ترتیب هستند. الگوریتم A* با استفاده از دو دیکشنری came_from و cost_so_far مسیر کوتاهترین میان دو نقطه را پیدا می‌کند. came_from نشان می‌دهد که هر گره از کجا آمده است و cost_so_far هزینه مسیر کوتاهترین میان دو نقطه را نشان می‌دهد.

برای استفاده از این الگوریتم، شما باید یک کلاس Graph بنویسید که شبکه را نمایش دهد و دو تابع neighbors و cost را برای آن پیاده‌سازی کنید. neighbors باید لیستی از همه گره‌های مجاور به یک گره داده شده را برگرداند و cost باید هزینه حرکت از یک گره به گره دیگر را بازگرداند. به عنوان مثال، برای یک شبکه مربعی با ابعاد n، می‌توانید کد زیر را برای پیاده‌سازی کلاس Graph استفاده کنید:

class SquareGrid:
def __init__(self, width, height):
self.width = width
self.height = height
self.walls = []

def in_bounds(self, node):
(x, y) = node
return 0 <= x < self.width and 0 <= y < self.height

def passable(self, node):
return node not in self.walls

def neighbors(self, node):
(x, y) = node
results = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)]
if (x + y) % 2 == 0: results.reverse() # aesthetics
results = filter(self.in_bounds, results)
results = filter(self.passable, results)
return results

def cost(self, current, next):
return 1

در این کد، walls یک لیست از گره‌هایی است که قابل عبور نیستند. تابع in_bounds بررسی می‌کند که یک گره در محدوده شبکه قرار دارد یا خیر، و تابع passable بررسی می‌کند که یک گره قابل عبور است یا خیر. تابع neighbors لیستی از همه گره‌های مجاور به یک گره را برمی‌گرداند و تابع cost هزینه حرکت از یک گره به گره دیگر را بازمی‌گرداند که در این مثال برابر با یک است.

بعد از پیاده‌سازی کلاس Graph، می‌توانید از الگوریتم A* برای پیدا کردن مسیر کوتاهترین میان دو نقطه در شبکه استفاده کنید. به عنوان مثال، شما می‌توانید از کد زیر برای پیدا کردن مسیر کوتاهترین میان دو نقطه در یک شبکه مربعی با ابعاد n استفاده کنید:

 

n = 10
g = SquareGrid(n, n)
g.walls = [(1, 1), (2, 1), (3, 1), (3, 2), (3, 3), (3, 4), (2, 4)]
start = (1, 2)
goal = (8, 8)
came_from, cost_so_far = astar(g, start, goal)

در این مثال، یک شبکه مربعی با ابعاد n=10 ایجاد می‌شود و تعدادی گره به عنوان دیوار مشخص شده‌اند. سپس گره شروع و پایان مشخص شده و الگوریتم A* برای پیدا کردن مسیر کوتاهترین میان دو نقطه اجرا می‌شود. خروجی این الگوریتم شامل دو دیکشنری came_from و cost_so_far است که مسیر کوتاهترین میان دو نقطه را نشان می‌دهند.


معکوس کردن لیست

 

 

 


معکوس کردن لیست با روشی دیگر

 

Output:

 


 

تبدیل رشته به دیکشنری در پایتون

 


 

Output :

 

 


محاصبه مصاحت دایره با پایتون:

کد برنامه

 

Output


فاکتوریل با پایتون

 


چاپ فیبوناچی اعداد

 

 


مثله  ۸ وزیر با پایتون (ملکه)


پیدا کردن Resolution تصایر با پایتون

Source Code of Find Resolution of JPEG Image

 

Output

 


 

کد بازی حدس زدن شماره با پایتون

 

 


 

 

شاید این مطلب هم برای شما جالب باشد: 

کتاب تمرینات پایتون

 

 


آموزش پایتون
آموزش پایتون

All Comments:

  1. علی مرادی

    ۰۱/۲۵/۱۴۰۱

    سلام، میخواستم از سایت خوبتون تشکر کنم

    • admin

      ۰۱/۲۸/۱۴۰۱

      ممنون که مارو حماییت میکنین

  2. امیر

    ۰۶/۰۴/۱۴۰۱

    محاصبه مصاحت!!!!!!!!!!واقعاا😂😂

  3. مهرانه

    ۰۶/۲۲/۱۴۰۱

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

دیدگاه شما:

نوشته های مرتبط

۲۴

اردیبهشت
هوش مصنوعی

معرفی بهترین ابزار هوش مصنوعی

ابزار هوش مصنوعی (Artificial Intelligence) به دسته‌ای از تکنولوژی‌ها گفته می‌شود که به کامپیوترها اجازه می‌دهد تا به صورت خودکار، هوشمندانه و بدون نیاز به دخالت انسان، مسائل را حل کنند و تصمیم‌هایی بگیرند. در این روش، کامپیوتر با استفاده […]

http://platinco.ir/tag/python/

۱۴

اردیبهشت
پایتون

آموزش کتابخانه pygame

انواع روش های ساخت بازی با پایتون Python یکی از زبان‌های محبوب برای توسعه بازی است و به دلیل سادگی و قابلیت استفاده آن، توسعه دهندگان بازی‌های زیادی از آن استفاده می‌کنند. در ادامه، انواع روش‌های ساخت بازی با پایتون[…]

۱۰

فروردین
تجارت, دنیای فضای مجازی, راهکارهای تجاری

دلیل مهاجرت استار تاپ ها

آمار مهاجرت در گروه‌های دانشجویان و فارغ‌التحصیلان،‌ اساتید، محققان و پژوهشگران، پزشکان و پرستاران و فعالان حوزه کسب‌و‌کارهای نوپا (استارتاپ‌ها) چگونه است؟ بیشترین میل بازگشت به کشور بعد از مهاجرت در میان فعالان استارتاپی کشورمان است. از تبدیل شدن موضوع[…]