Daa Lab
Daa Lab
import heapq
class node:
self.freq = freq
self.symbol = symbol
self.left = left
self.right = right
self.huff = ''
if(node.left):
printNodes(node.left, newVal)
if(node.right):
printNodes(node.right, newVal)
for x in range(len(chars)):
left = heapq.heappop(nodes)
right = heapq.heappop(nodes)
left.huff = 0
right.huff = 1
heapq.heappush(nodes, newNode)
printNodes(nodes[0])
# n queens
global N
N=4
def printSolution(board):
for i in range(N):
for j in range(N):
print()
for i in range(col):
if board[row][i] == 1:
return False
if board[i][j] == 1:
return False
if board[i][j] == 1:
return False
return True
def solveNQUtil(board, col):
if col >= N:
return True
for i in range(N):
if isSafe(board, i, col):
board[i][col] = 1
return True
board[i][col] = 0
return False
def solveNQ():
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0] ]
if solveNQUtil(board, 0) == False:
return False
printSolution(board)
return True
solveNQ()
def binary_search(arr, low, high, x):
if arr[mid] == x:
return mid
else:
return -1
arr = list(map(int,input().split()))
if result != -1:
else:
pivot = array[high]
i = low - 1
i=i+1
return i + 1
quickSort(array, low, pi - 1)
quickSort(array, pi + 1, high)
data = list(map(int,input().split()))
print("Unsorted Array")
print(data)
size = len(data)
quickSort(data, 0, size - 1)
print('Sorted Array in Ascending Order:')
print(data)
def mergeSort(arr):
if len(arr) > 1:
mid = len(arr)//2
L = arr[:mid]
R = arr[mid:]
mergeSort(L)
mergeSort(R)
i=j=k=0
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
arr[k] = L[i]
i += 1
k += 1
while j < len(R):
arr[k] = R[j]
j += 1
k += 1
arr = list(map(int,input().split()))
mergeSort(arr)
print(*arr)
#randomized quick sort
import random
pivotindex = partitionrand(arr,\
start, stop)
arr[start], arr[randpivot] = \
arr[randpivot], arr[start]
pivot = start
i = start + 1
i=i+1
arr[pivot] , arr[i - 1] =\
arr[i - 1] , arr[pivot]
pivot = i - 1
return (pivot)
arr = list(map(int,input().split()))
quicksort(arr, 0, len(arr) - 1)
print(*arr)
# TRAVELLING SALESPERSON
V=4
vertex = []
for i in range(V):
if i != s:
vertex.append(i)
min_path = maxsize
next_permutation=permutations(vertex)
for i in next_permutation:
current_pathweight = 0
k=s
for j in i:
current_pathweight += graph[k][j]
k=j
current_pathweight += graph[k][s]
return min_path
if __name__ == "__main__":
graph = [[0, 10, 15, 20], [10, 0, 35, 25],[15, 35, 0, 30], [20, 25,
30, 0]]
s=0
print(travellingSalesmanProblem(graph, s))
#sum of subsets
# Base Cases
if (sum == 0) :
return True
if (n == 0 and sum != 0) :
return False
sum = 9
n = len(set)
else :
INF = 99999
for i in range(V)]
for i in range(V):
for j in range(V):
dist[i][j] = graph[i][j]
for k in range(V):
for i in range(V):
for j in range(V):
sum = 0
for i in range(V):
sum += dist[i][j]
return sum
for i in range(N)]
for i in range(E):
u = edges[i][0]
v = edges[i][1]
w = edges[i][2]
g[u][v] = w
g[v][u] = w
return floyd_warshall(g, N)
if __name__ == '__main__':
N=4
E=3
print(sumOfshortestPath(N, E, Edges))
class Graph():
self.V = vertices
min = sys.maxsize
for u in range(self.V):
min = dist[u]
min_index = u
return min_index
dist[src] = 0
x = self.minDistance(dist, sptSet)
sptSet[x] = True
for y in range(self.V):
self.printSolution(dist)
if __name__ == "__main__":
g = Graph(9)
[0, 8, 0, 7, 0, 4, 0, 0, 2],
[0, 0, 0, 0, 0, 2, 0, 1, 6],
[0, 0, 2, 0, 0, 0, 6, 7, 0]
g.dijkstra(0)
#implement kanpsack
def knapSack(W, wt, val, n):
if n == 0 or W == 0 :
return 0
else:
W = 50
n = len(val)
if i == 0 or w == 0:
K[i][w] = 0
K[i][w] = max(val[i-1]
+ K[i-1][w-wt[i-1]],
K[i-1][w])
else:
K[i][w] = K[i-1][w]
return K[n][W]
W = 50
n = len(val)