Indicates an algorithm is generally efficient and scalable.
Flip to see [answer/question]
Flip to see [answer/question]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Flip
Revise later
SpaceTo flip
If confident
All Flashcards
What is the significance of polynomial time?
Indicates an algorithm is generally efficient and scalable.
Why are exponential time algorithms considered inefficient?
Their runtime grows very quickly, making them impractical for large inputs.
When should heuristics be used?
When finding the optimal solution is too computationally expensive.
How does input size affect algorithm efficiency?
Larger inputs generally require more computational resources, impacting efficiency.
What is the trade-off when using heuristics?
Accuracy is sacrificed for speed and feasibility.
What is the goal of algorithm design?
To solve a problem efficiently using minimal resources.
Explain the relationship between problem type and algorithm efficiency.
Optimization problems can be more computationally intensive than decision problems.
What does it mean for an algorithm to be 'scalable'?
The algorithm maintains reasonable efficiency as the input size increases.
What is the importance of understanding algorithm efficiency?
Helps in choosing the best approach for solving a problem within resource constraints.
How do heuristics relate to unreasonable time complexity?
Heuristics provide practical solutions when a problem has unreasonable time complexity.
What does the following code output?
python
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
print(is_prime(4))```
False
What does the following code output?
python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(3))```
6
Identify the error in the following code:
python
def find_max(list):
max_value = 0
for num in list:
if num > max_value
max_value = num
return max_value```
Missing colon after the if condition. It should be if num > max_value:
What does the following code output?
python
def linear_search(list, target):
for i in range(len(list)):
if list[i] == target:
return i
return -1
my_list = [10, 20, 30, 40, 50]
print(linear_search(my_list, 30))```
2
What does the following code output?
python
def example_function(n):
count = 0
for i in range(n):
for j in range(n):
count += 1
return count
print(example_function(4))```
16
Identify the error in the following code:
python
def calculate_average(numbers):
sum = 0
for number in numbers:
sum += number
average = sum / len(numbers)
return average
print(calculate_average([]))```
ZeroDivisionError: division by zero. The code attempts to divide by the length of the list, which is zero when the list is empty.
What does the following code output?
python
def mystery_function(arr):
n = len(arr)
for i in range(n):
for j in range(i+1, n):
if arr[i] > arr[j]:
arr[i], arr[j] = arr[j], arr[i]
return arr
print(mystery_function([5, 2, 8, 1, 9]))```
[1, 2, 5, 8, 9]
Identify the error in the following code:
python
def recursive_function(n):
if n > 0:
return recursive_function(n-1)
print(recursive_function(5))```
The function lacks a base case that returns a concrete value when n reaches a certain condition (e.g., n == 0). This will result in infinite recursion and eventually a stack overflow error.
python
def calculate_sum(numbers):
total = 0
for i in range(1, len(numbers)):
total += numbers[i]
return total
print(calculate_sum([1, 2, 3, 4, 5]))```
The loop starts at index 1 instead of 0, causing the first element of the list to be skipped. The loop should start with for i in range(len(numbers)):
What is an algorithm?
A set of instructions designed to solve a specific problem.
What is a problem instance?
A specific input to a problem.
What is a decision problem?
A problem with a yes or no answer.
What is an optimization problem?
A problem that seeks the best solution from many possibilities.
What is algorithm efficiency?
A measure of how many computational resources an algorithm uses.
What is 'reasonable time' in algorithm analysis?
Algorithms that run in polynomial time or lower.
What is 'unreasonable time' in algorithm analysis?
Algorithms that run in exponential or factorial time.
What are heuristics?
Approximation techniques used when finding an exact solution is too difficult or time-consuming.
Define polynomial time.
A running time that increases as a polynomial function of the input size (e.g., n, n^2, n^3).
Define exponential time.
A running time that increases exponentially as the input size grows (e.g., 2^n, 3^n).