Untitled
🧩 Syntax:
def a_star(initial_state, goal_state):
OPEN = [(calculate_heuristic(initial_state, goal_state), 0, initial_state, 0)]
CLOSED = set()
while OPEN:
f, g, current_state,iteration = min(OPEN)
OPEN.remove((f, g, current_state, iteration))
CLOSED.add(tuple(map(tuple, current_state)))
print_state(current_state)
print()
if current_state == goal_state:
print(f"{hooray}Solution found!")
print(f"Iteration:- {iteration}")
return
successors = [
(move_up(current_state), "UP"),
(move_down(current_state), "DOWN"),
(move_left(current_state), "LEFT"),
(move_right(current_state), "RIGHT")
]
successors = [(s, move) for s, move in successors if s is not None and tuple(
map(tuple, s)) not in CLOSED]
for successor, move in successors:
h = calculate_heuristic(successor, goal_state)
g_successor = g + 1
f_successor = g_successor + h
i = iteration + 1
if (h, g_successor, successor, i) not in OPEN:
OPEN.append((f_successor, g_successor, successor, i))
print(f"{hooray}No solution found.")
initial_state = []
print("Enter the initial state (3x3 matrix):")
for _ in range(3):
row = list(map(int, input().split()))
initial_state.append(row)
goal_state = []
print("Enter the goal state (3x3 matrix):")
for _ in range(3):
row = list(map(int, input().split()))
goal_state.append(row)
a_star(initial_state, goal_state)
________________________________________________________________________________
PROGRAM 2
MAX, MIN = 1000, -1000
def minimax(depth, nodeIndex, maximizingPlayer, values, alpha, beta,d):
if depth == d:
return values[nodeIndex]
if maximizingPlayer:
best = MIN
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i, False, values, alpha, beta,d)
best = max(best, val)
alpha = max(alpha, best)
if beta <= alpha:
break
return best
else:
best = MAX
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i, True, values, alpha, beta,d)
best = min(best, val)
beta = min(beta, best)
if beta <= alpha:
break
return best
if __name__ == "__main__":
values = [int(x) for x in input("Enter values separated by spaces: ").split()]
depth = int(input("Enter the depth: "))
print("The optimal value is :", minimax(0, 0, True, values, MIN, MAX,depth))
____________________________________________________________________________________________________
Program 4
import random
import numpy as np
def hill_climbing_search(func, x0, delta=0.01, tol=1e-6, max_iter=1000):
x = x0
i = 0
while True:
i += 1
x_up = x + delta
x_down = x - delta
f_x_up = func(x_up)
f_x_down = func(x_down)
if i > max_iter:
print("Max iterations reached.")
break
if f_x_up < f_x_down:
x = x_down
else:
x = x_up
if abs(x - x0) < tol:
break
x0 = x
return x
def func(x):
return -0.2*x**4 + 1.5*x**3 - 3*x**2 + 2*x + 10*np.sin(x)
x0 = 78
x_max = hill_climbing_search(func, x0)
print(f"The value of x that maximises the function is {x_max}.")