DAA Lab File
DAA Lab File
Job Scheduling
In [1]: def printJobScheduling(arr, t):
n = len(arr)
for i in range(n):
result = [False] * t
job = ['-1'] * t
for i in range(len(arr)):
if result[j] is False:
result[j] = True
job[j] = arr[i][0]
break
print(job)
['j2', 2, 20],
['j3', 5, 30],
['j4', 3, 18],
['j5', 4, 18],
['j6', 5, 10],
['j7', 2, 23],
['j8', 7, 16],
['j9', 3, 25]]
printJobScheduling(arr, 7)
Fractional Knapsack
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 1/13
7/10/2021 Algo_ASS
self.wt = wt
self.val = val
self.ind = ind
self.cost = val // wt
class FractionalKnapSack:
iVal = []
for i in range(len(wt)):
iVal.sort(reverse=True)
totalValue = 0
for i in iVal:
curWt = int(i.wt)
curVal = int(i.val)
capacity -= curWt
totalValue += curVal
else:
break
return totalValue
if __name__ == "__main__":
wt = [2 , 3, 5, 7, 1, 4, 1]
capacity = 15
Kruskal’s Algorithm
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 2/13
7/10/2021 Algo_ASS
class Graph:
self.V = vertices
self.graph = []
self.graph.append([u, v, w])
if parent[i] == i:
return i
xroot = self.find(parent, x)
yroot = self.find(parent, y)
parent[xroot] = yroot
parent[yroot] = xroot
else:
parent[yroot] = xroot
rank[xroot] += 1
def KruskalMST(self):
result = []
i = 0
e = 0
self.graph = sorted(self.graph,
parent = []
rank = []
parent.append(node)
rank.append(0)
u, v, w = self.graph[i]
i = i + 1
x = self.find(parent, u)
y = self.find(parent, v)
if x != y:
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 3/13
7/10/2021 Algo_ASS
e = e + 1
result.append([u, v, w])
self.union(parent, rank, x, y)
minimumCost = 0
minimumCost += weight
g = Graph(5)
g.addEdge(0, 1, 8)
g.addEdge(0, 2, 5)
g.addEdge(1, 2, 9)
g.addEdge(1, 3, 11)
g.addEdge(2, 3, 15)
g.addEdge(2, 4, 10)
g.addEdge(3, 4, 7)
g.KruskalMST()
0 -- 2 == 5
3 -- 4 == 7
0 -- 1 == 8
2 -- 4 == 10
Prims Algorithm
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 4/13
7/10/2021 Algo_ASS
self.V = vertices
minimumCost = 0
min = sys.maxsize
for v in range(self.V):
min = key[v]
min_index = v
return min_index
def primMST(self):
key[0] = 0
parent[0] = -1
u = self.minKey(key, mstSet)
mstSet[u] = True
for v in range(self.V):
key[v] = self.graph[u][v]
parent[v] = u
self.printMST(parent)
g = Graph(5)
[2, 0, 3, 8, 5],
[0, 3, 0, 0, 7],
[6, 8, 0, 0, 9],
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 5/13
7/10/2021 Algo_ASS
[0, 5, 7, 9, 0]]
g.primMST()
Edge Weight
0 - 1 2
1 - 2 3
0 - 3 6
1 - 4 5
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 6/13
7/10/2021 Algo_ASS
for i in range(m+1):
for j in range(n+1):
if i == 0 or j == 0:
L[i][j] = 0
L[i][j] = L[i-1][j-1] + 1
else:
index = L[m][n]
lcs_algo[index] = ""
i = m
j = n
if S1[i-1] == S2[j-1]:
lcs_algo[index-1] = S1[i-1]
i -= 1
j -= 1
index -= 1
i -= 1
else:
j -= 1
S1 = "AGGTAB"
S2 = "GXTXAYB"
m = len(S1)
n = len(S2)
lcs_algo(S1, S2, m, n)
S1 : AGGTAB
S2 : GXTXAYB
LCS: GTAB
Fibonacci Sequence
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 7/13
7/10/2021 Algo_ASS
n1, n2 = 0, 1
count = 0
if nterms <= 0:
elif nterms == 1:
print(n1,end=" ")
else:
print("Fibonacci sequence:")
print(n1,end=" ")
nth = n1 + n2
# update values
n1 = n2
n2 = nth
count += 1
def Fibonacci(n):
if n < 0:
print("Incorrect input")
elif n == 0:
return 0
elif n == 1 or n == 2:
return 1
else:
Fibonacci sequence:
0 1 1 2 3 5 8 13 21 34 55 89
Addition of 12 is = 144
Merge Sort
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 8/13
7/10/2021 Algo_ASS
n1 = m - l + 1
n2 = r- m
L = [0] * (n1)
R = [0] * (n2)
L[i] = arr[l + i]
R[j] = arr[m + 1 + j]
i = 0
j = 0
k = l
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
arr[k] = L[i]
i += 1
k += 1
arr[k] = R[j]
j += 1
k += 1
def mergeSort(arr,l,r):
if l < r:
m = (l+(r-1))//2
mergeSort(arr, l, m)
mergeSort(arr, m+1, r)
merge(arr, l, m, r)
n = len(arr)
for i in range(n):
mergeSort(arr,0,n-1)
for i in range(n):
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 9/13
7/10/2021 Algo_ASS
Given array is
12 11 13 5 6 81 77 7
Sorted array is
5 6 7 11 12 13 77 81
Binary Search
In [8]: def binary_search(arr, low, high, x):
if arr[mid] == x:
return mid
else:
else:
return -1
arr = [ 2, 3, 4, 10, 40 ]
x = 10
if result != -1:
else:
Quick Sort
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 10/13
7/10/2021 Algo_ASS
i = (low-1)
pivot = arr[high]
i = i+1
return (i+1)
if len(arr) == 1:
return arr
arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr, 0, n-1)
for i in range(n):
1 5 7 8 9 10
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 11/13
7/10/2021 Algo_ASS
INF = sys.maxsize
if left == right:
min = A[right]
max = A[left]
if right - left == 1:
min = A[left]
max = A[right]
else:
min = A[right]
max = A[left]
if __name__ == '__main__':
A = [7, 2, 9, 3, 1, 6, 22, 8, 4]
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 12/13
7/10/2021 Algo_ASS
In [ ]:
localhost:8888/nbconvert/html/Downloads/Algo_ASS.ipynb?download=false 13/13