Interval Scheduling Greedy Algorithm: Python
Key Takeaways
This video teaches the interval scheduling problem using a greedy algorithm in Python
Full Transcript
this video I want to walk through a pretty cool and simple algorithm and how to implement it in Python so the problem is that given a set of tasks where each task has a starting time and an ending time we want to compute the largest sub set of non-overlapping intervals so what that means is that we want to do as many of these tasks as possible but none of them can overlap each other and how we solve this which one can prove is by agree the algorithm which is that we pick the task with the earliest ending time first so in this case this one the first one has the earliest finish time which means that we pick that one and then what we want to do is that we want to disclude these the second and the third one because visually we can obviously see that the they overlap the first one which means that the finish time of this one is greater than the starting time of this one right for them to not overlap the finish time of this one needs to be less than or equal to the starting time of the other task all right so let's try to code this solution and let's see I've already copied the tasks here so or our four requests so what we want to and this these are the same as the image so for example our one is this one starts at zero and ends at three so the first one is the starting time second one is the ending time and then we want to put all of these in a list or eight like this and remember what we want to do is that we want to pick the earliest finish time first which means that we have to sort it and then also this is a list of tuples and we want to sort it by the second element so one can do this by using the lambda like this so we want to sort with the key lambda with X and we want to sort with the second element of the tuple all right and then we want to have an optimal solution which we call o where we will append the tasks or the requests which are in the optimal solution okay so then we want to define the role scheduling which takes a set of requests and also o the empty list and then the goal is that we want to have a turn oh so let's see you can call this here interval scheduling aren't oh I want to see oh and then you can print o all right so now to the actual algorithm what we want to do is that we can start we can start by having a finish time of zero and then we want to go through each request in R and remember these are sorted already by by finish time which we did here and then if the starting time of this one is greater or equal to the finish time of the one the one that we're currently looking at I remember we've initialize it at 0 as 0 then it means that it's a viable is next option right because then they don't overlap and we just go by the principle of taking the one that has the earlier finish time first and since it's already sorted that would be the next one in the list as long as they don't overlap so we look if finish is less than equal to R of 0 right this means that the finish time I'm the one that we're currently looking at and in this life as 0 is less than or equal to the starting time of R of 0 which will hold for the first one right 0 less than 0 if this is the case then the finish time we'll just set as the finish time of that particular task and we will append this to our optimal solution and believe it or not the algorithm is that simple this will provide us the optimal solution first I did it in a much more complicated way than this but this works so why not pick the simple one right so if we run this on the example of the image I have then it says that we should pick the tile the request o 3 3 6 & 8 10 so this means that we should pick this one right 0 2 3 then we disclude these two and we pick this one because it's had the earliest finish time so pick this one this one and then we pick since these are all not included pick the last one so the optimal solution are those three for for a total of three tasks alright I hope you enjoyed the video and see you in another one hopefully
Original Description
Explanation and implementation of interval scheduling problem using a greedy algorithm.
CODE REPOSITORY: https://github.com/AladdinPerzon/Algorithms-Collection-Python
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from Aladdin Persson · Aladdin Persson · 21 of 60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
▶
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
computeCost.m Linear Regression Cost Function - Machine Learning
Aladdin Persson
gradientDescent.m Gradient Descent Implementation - Machine Learning
Aladdin Persson
Neural Network from scratch - Part 1 (Standard Notation)
Aladdin Persson
Neural Network from scratch - Part 2 (Forward Propagation)
Aladdin Persson
Neural Network from scratch - Part 3 (Backward Propagation)
Aladdin Persson
Neural Network from scratch - Part 4 (With Python)
Aladdin Persson
sigmoid.m - Programming Assignment 2 Machine Learning
Aladdin Persson
costFunction.m - Programming Assignment 2 Machine Learning
Aladdin Persson
predict.m - Programming Assignment 2 Machine Learning
Aladdin Persson
costFunctionReg.m - Programming Assignment 2 Machine Learning
Aladdin Persson
lrCostFunction.m - Programming Assignment 3 Machine Learning
Aladdin Persson
oneVsAll.m - Programming Assignment 3 Machine Learning
Aladdin Persson
predictOneVsAll.m - Programming Assignment 3 Machine Learning
Aladdin Persson
predict.m - Programming Assignment 3 Machine Learning
Aladdin Persson
Caesar Cipher Encryption and Decryption with example
Aladdin Persson
Cryptography: Caesar Cipher Python
Aladdin Persson
Vigenere Cipher Explained (with Example)
Aladdin Persson
Cryptography: Vigenere Cipher Python
Aladdin Persson
Hill Cipher Explained (with Example)
Aladdin Persson
Cryptography: Hill Cipher Python
Aladdin Persson
Interval Scheduling Greedy Algorithm: Python
Aladdin Persson
Weighted Interval Scheduling Algorithm Explained
Aladdin Persson
Weighted Interval Scheduling Python Code
Aladdin Persson
Sequence Alignment | Needleman Wunsch Algorithm
Aladdin Persson
Sequence Alignment | Needleman Wunsch in Python
Aladdin Persson
Codility BinaryGap Python
Aladdin Persson
Codility CyclicRotation Python
Aladdin Persson
Derivation Linear Regression with Gradient Descent
Aladdin Persson
Linear Regression Gradient Descent From Scratch in Python
Aladdin Persson
Pytorch Neural Network example
Aladdin Persson
Pytorch CNN example (Convolutional Neural Network)
Aladdin Persson
Pytorch LeNet implementation from scratch
Aladdin Persson
Pytorch VGG implementation from scratch
Aladdin Persson
Pytorch GoogLeNet / InceptionNet implementation from scratch
Aladdin Persson
How to save and load models in Pytorch
Aladdin Persson
How to build custom Datasets for Images in Pytorch
Aladdin Persson
Pytorch Transfer Learning and Fine Tuning Tutorial
Aladdin Persson
Pytorch Data Augmentation using Torchvision
Aladdin Persson
Pytorch Quick Tip: Weight Initialization
Aladdin Persson
Pytorch Quick Tip: Using a Learning Rate Scheduler
Aladdin Persson
Pytorch ResNet implementation from Scratch
Aladdin Persson
Pytorch TensorBoard Tutorial
Aladdin Persson
Pytorch DCGAN Tutorial (See description for updated video)
Aladdin Persson
Naive Bayes from Scratch - Machine Learning Python
Aladdin Persson
Spam Classifier using Naive Bayes in Python
Aladdin Persson
K-Nearest Neighbor from scratch - Machine Learning Python
Aladdin Persson
Linear Regression Normal Equation Python
Aladdin Persson
SVM from Scratch - Machine Learning Python (Support Vector Machine)
Aladdin Persson
Neural Network from Scratch - Machine Learning Python
Aladdin Persson
Pytorch RNN example (Recurrent Neural Network)
Aladdin Persson
Pytorch Bidirectional LSTM example
Aladdin Persson
Pytorch Text Generator with character level LSTM
Aladdin Persson
Logistic Regression from Scratch - Machine Learning Python
Aladdin Persson
K-Means Clustering from Scratch - Machine Learning Python
Aladdin Persson
Pytorch Torchtext Tutorial 1: Custom Datasets and loading JSON/CSV/TSV files
Aladdin Persson
Pytorch Torchtext Tutorial 2: Built in Datasets with Example
Aladdin Persson
Pytorch Torchtext Tutorial 3: From Textfiles to Dataset
Aladdin Persson
Paper Review: Sequence to Sequence Learning with Neural Networks
Aladdin Persson
Pytorch Seq2Seq Tutorial for Machine Translation
Aladdin Persson
Pytorch Seq2Seq with Attention for Machine Translation
Aladdin Persson
Related AI Lessons
⚡
⚡
⚡
⚡
Bloom Filters, Explained Properly
Dev.to · Daksh Gargas
Prefix Sums: The Preprocessing Trick That Makes Range Queries Instant
Medium · Programming
I Thought I Was Ready for the Interview — Then One Simple Math Question Destroyed Me
Medium · Programming
Week 2(Day 10): LeetCode Two Pointers(slow & fast): Remove Duplicates from Sorted Array (Brute…
Medium · Python
🎓
Tutor Explanation
DeepCamp AI