Flashcard Deck · 24 cards · Public

MIT 6.006 - Introduction to Algorithms

Unlock the secrets of efficient computation with this high-yield flashcard deck for MIT 6.006! Master fundamental algorithms, data structures, and complexity analysis to excel in computer science.

Cards in this deck

(24 cards)

Preview terms and definitions before starting your study session.

#1
Term
What is an Algorithm?
Definition
A well-defined computational procedure that takes some value(s) as input and produces some value(s) as output. It's a sequence of unambiguous instructions for solving a problem.
#2
Term
What is Time Complexity?
Definition
A measure of the amount of time an algorithm takes to run as a function of the length of its input. It's typically expressed using asymptotic notation (e.g., Big-O) and counts elementary operations.
#3
Term
What is Space Complexity?
Definition
A measure of the amount of memory an algorithm uses as a function of the length of its input. It includes both auxiliary space (temporary space used by the algorithm) and the space used for input storage.
#4
Term
Explain Big-O Notation ().
Definition
represents the upper bound of an algorithm's running time. A function is in if there exist positive constants and such that for all . It describes the worst-case or maximum growth rate.
#5
Term
Explain Omega Notation ().
Definition
represents the lower bound of an algorithm's running time. A function is in if there exist positive constants and such that for all . It describes the best-case or minimum growth rate.
#6
Term
Explain Theta Notation ().
Definition
represents the tight bound of an algorithm's running time. A function is in if it is both an upper bound () and a lower bound (). Formally, there exist positive constants and such that for all . It describes the average-case growth rate.
#7
Term
What is Amortized Analysis?
Definition
A method for analyzing the time complexity of a sequence of operations, where the average cost of an operation is considered over a worst-case sequence of operations. It often applies to data structures like dynamic arrays (e.g., list.append() in Python), where occasional expensive operations are offset by many cheap ones.
#8
Term
Describe the Divide and Conquer algorithmic paradigm.
Definition
A problem-solving strategy that involves three steps:
1. Divide: Break the problem into smaller subproblems of the same type.
2. Conquer: Recursively solve these subproblems. If subproblems are small enough, solve them directly.
3. Combine: Combine the solutions to the subproblems to get the solution to the original problem.
Showing 8 of 24 cards in this deck.
Study All Now