Podcast
Questions and Answers
Hver er lægsta upphæðin sem gefur mótdæmi þegar gráðug aðferð er notuð til að finna lágmarksfjölda mynta?
Hver er lægsta upphæðin sem gefur mótdæmi þegar gráðug aðferð er notuð til að finna lágmarksfjölda mynta?
- 365
- 91
- 52
- 416 (correct)
Hvað gerir endurkvæma nálgunin í MinMyntir(k)
fallinu þegar k < 0
?
Hvað gerir endurkvæma nálgunin í MinMyntir(k)
fallinu þegar k < 0
?
- Hún skilar k.
- Hún skilar 0.
- Hún skilar 1.
- Hún skilar ∞ (óendanleika). (correct)
Hvað er átt við með d ∈ D
í samhengi við endurkvæmu lausnina til að finna lágmarksfjölda mynta?
Hvað er átt við með d ∈ D
í samhengi við endurkvæmu lausnina til að finna lágmarksfjölda mynta?
- `d` er ein mynt í safni mynttegunda `D`. (correct)
- `d` er upphæðin sem á að skipta upp í myntir og `D` er fjöldi mynta sem notaðar eru.
- `d` er fjöldi endurkvæmra kalla og `D` er dýpt endurkvæmninnar.
- `d` er lágmarksfjöldi mynta og `D` er safn af upphæðum sem hægt er að skipta upp í.
Hvers vegna er kvik bestun (dynamic programming) notuð til að leysa myntskiptavandann?
Hvers vegna er kvik bestun (dynamic programming) notuð til að leysa myntskiptavandann?
Hvaða gildi skilar min_myntir(k, D)
fallið ef k == 0
?
Hvaða gildi skilar min_myntir(k, D)
fallið ef k == 0
?
Í min_myntir
forritinu, hvað táknar float('inf')
?
Í min_myntir
forritinu, hvað táknar float('inf')
?
Hver er munurinn á gráðugri aðferð og bestu lausn þegar kemur að myntskiptum?
Hver er munurinn á gráðugri aðferð og bestu lausn þegar kemur að myntskiptum?
Hvaða kostur er við að nota töflu í kvikri bestun til að leysa myntskiptavandann?
Hvaða kostur er við að nota töflu í kvikri bestun til að leysa myntskiptavandann?
Hvaða fullyrðing lýsir best tilgangi þess að leysa vandamálið um stærstu samliggjandi summu í atvinnuviðtölum?
Hvaða fullyrðing lýsir best tilgangi þess að leysa vandamálið um stærstu samliggjandi summu í atvinnuviðtölum?
Hver er tímaflækjan fyrir einföldu lausnina (brute force) við vandamálinu um stærstu samliggjandi summu?
Hver er tímaflækjan fyrir einföldu lausnina (brute force) við vandamálinu um stærstu samliggjandi summu?
Hvernig er innsta lykkjan notuð í einföldu lausninni (O(n^3)) við vandamálinu um stærstu samliggjandi summu?
Hvernig er innsta lykkjan notuð í einföldu lausninni (O(n^3)) við vandamálinu um stærstu samliggjandi summu?
Hver er kosturinn við að nota hlutsummur til að leysa vandamálið um stærstu samliggjandi summu?
Hver er kosturinn við að nota hlutsummur til að leysa vandamálið um stærstu samliggjandi summu?
Hver er tímaflækjan fyrir lausn sem notar hlutsummur til að finna stærstu samliggjandi summu?
Hver er tímaflækjan fyrir lausn sem notar hlutsummur til að finna stærstu samliggjandi summu?
Hvað er hlutsumma P[i] í samhengi við lausn með hlutsummum?
Hvað er hlutsumma P[i] í samhengi við lausn með hlutsummum?
Hvernig er summa hlutfylkis A[i..j] reiknuð þegar hlutsummur eru notaðar?
Hvernig er summa hlutfylkis A[i..j] reiknuð þegar hlutsummur eru notaðar?
Hver er minnisflækjan fyrir einföldu lausnina (brute force)?
Hver er minnisflækjan fyrir einföldu lausnina (brute force)?
Hver er helsti kosturinn við að nota kvika bestun (dynamic programming) til að leysa vandamálið um stærstu samliggjandi summu?
Hver er helsti kosturinn við að nota kvika bestun (dynamic programming) til að leysa vandamálið um stærstu samliggjandi summu?
Hvaða fullyrðing er sönn varðandi samanburð á einföldu lausninni og hlutsummulausninni?
Hvaða fullyrðing er sönn varðandi samanburð á einföldu lausninni og hlutsummulausninni?
Í can_split_same(A, B)
fallinu, hvaða hlutverki gegnir dp[n] = True
?
Í can_split_same(A, B)
fallinu, hvaða hlutverki gegnir dp[n] = True
?
Í count_same_splits(A, B)
fallinu, hvað táknar dp[i] += dp[j]
?
Í count_same_splits(A, B)
fallinu, hvað táknar dp[i] += dp[j]
?
Hvert er besta viðmiðið til að velja á milli uppsveiflu (e. bottom-up) og niðursveiflu (e. top-down) nálgunar við dynamic programming (DP) vandamál?
Hvert er besta viðmiðið til að velja á milli uppsveiflu (e. bottom-up) og niðursveiflu (e. top-down) nálgunar við dynamic programming (DP) vandamál?
Hver er tímaflækjustigið fyrir can_split_same(A, B)
fallið, gefið að is_word()
sé O(1)?
Hver er tímaflækjustigið fyrir can_split_same(A, B)
fallið, gefið að is_word()
sé O(1)?
Í vandamálinu um stærstu summu hlutstrengs, hvers vegna er mikilvægt að gefa út 0 ef runan inniheldur eingöngu neikvæðar tölur?
Í vandamálinu um stærstu summu hlutstrengs, hvers vegna er mikilvægt að gefa út 0 ef runan inniheldur eingöngu neikvæðar tölur?
Hver er munurinn á vandamálinu um lengstu samfelldu hlutrunu og lengstu hlutrunu?
Hver er munurinn á vandamálinu um lengstu samfelldu hlutrunu og lengstu hlutrunu?
Í vandamálinu um stærsta margfeldi hlutstrengs, hvernig meðhöndlar þú neikvæðar tölur?
Í vandamálinu um stærsta margfeldi hlutstrengs, hvernig meðhöndlar þú neikvæðar tölur?
Hvað er átt við með "minnislistun" (e. memoization) í samhengi við reiknirit?
Hvað er átt við með "minnislistun" (e. memoization) í samhengi við reiknirit?
Hvert er hlutverk local_sum
breytunnar í Kadane reikniritinu?
Hvert er hlutverk local_sum
breytunnar í Kadane reikniritinu?
Hvaða fullyrðing lýsir best hvernig Kadane reikniritið finnur stærstu summu samliggjandi hlutfylkis?
Hvaða fullyrðing lýsir best hvernig Kadane reikniritið finnur stærstu summu samliggjandi hlutfylkis?
Hvað táknar breytan T
í reikniritinu fyrir hringtengda hlutfylkið?
Hvað táknar breytan T
í reikniritinu fyrir hringtengda hlutfylkið?
Í Kadane reikniritinu, hvað gerist ef local_sum
verður neikvæð?
Í Kadane reikniritinu, hvað gerist ef local_sum
verður neikvæð?
Hver er tímaflækjustigið (time complexity) fyrir Kadane reikniritið?
Hver er tímaflækjustigið (time complexity) fyrir Kadane reikniritið?
Hvert er hlutverk Kadane reikniritsins í samhengi við hringlaga fylki (e. circular array)?
Hvert er hlutverk Kadane reikniritsins í samhengi við hringlaga fylki (e. circular array)?
Hvernig er ákveðið hvort stærsta summan M
í hringlaga fylki sé 0?
Hvernig er ákveðið hvort stærsta summan M
í hringlaga fylki sé 0?
Af hverju er línan return max(0, global_sum)
notuð í lok Kadane reikniritsins?
Af hverju er línan return max(0, global_sum)
notuð í lok Kadane reikniritsins?
Hvaða fullyrðing er sönn um rakningarvensl Kadane reikniritsins, $S(i) = max{A[i], S(i − 1) + A[i]}$?
Hvaða fullyrðing er sönn um rakningarvensl Kadane reikniritsins, $S(i) = max{A[i], S(i − 1) + A[i]}$?
Hver er tímaflækjustigið (e. time complexity) fyrir reikniritið sem finnur stærstu summu í hringlaga fylki?
Hver er tímaflækjustigið (e. time complexity) fyrir reikniritið sem finnur stærstu summu í hringlaga fylki?
Í sönnun á Kadane reikniritinu, hvaða hlutverki gegnir grunntilvikið þegar $i = 0$?
Í sönnun á Kadane reikniritinu, hvaða hlutverki gegnir grunntilvikið þegar $i = 0$?
Í Python útfærslunni, hvaða lína ákvarðar stærstu summu sem endar á núverandi staki (e. current element) í venjulegu Kadane útgáfunni?
Í Python útfærslunni, hvaða lína ákvarðar stærstu summu sem endar á núverandi staki (e. current element) í venjulegu Kadane útgáfunni?
Hvaða breyting er gerð á Kadane reikniritinu til að finna minnstu summu samliggjandi hlutfylkis?
Hvaða breyting er gerð á Kadane reikniritinu til að finna minnstu summu samliggjandi hlutfylkis?
Hver er ávinningurinn af því að nota Kadane reikniritið umfram aðrar aðferðir til að finna stærstu summu samliggjandi hlutfylkis?
Hver er ávinningurinn af því að nota Kadane reikniritið umfram aðrar aðferðir til að finna stærstu summu samliggjandi hlutfylkis?
Ef við erum með fylki A = [-2, -3, 4, -1, -2, 1, 5, -3]
og við notum reikniritið til að finna stærstu summu hringlaga hlutfylkis, hvað verður M1
(stærsta summa venjulegs hlutfylkis)?
Ef við erum með fylki A = [-2, -3, 4, -1, -2, 1, 5, -3]
og við notum reikniritið til að finna stærstu summu hringlaga hlutfylkis, hvað verður M1
(stærsta summa venjulegs hlutfylkis)?
Fyrir hvaða tilvik er mikilvægt að athuga hvort allar tölur í fylkinu séu neikvæðar þegar stærsta samliggjandi hlutsumma er reiknuð í hringlaga fylki?
Fyrir hvaða tilvik er mikilvægt að athuga hvort allar tölur í fylkinu séu neikvæðar þegar stærsta samliggjandi hlutsumma er reiknuð í hringlaga fylki?
Í Python útfærslunni fyrir max_subarray_long
, hvað gerist ef lengd fylkisins A
er minni en X
?
Í Python útfærslunni fyrir max_subarray_long
, hvað gerist ef lengd fylkisins A
er minni en X
?
Í max_subarray_long
fallinu, hvaða hlutverki gegnir curr_min
breytan?
Í max_subarray_long
fallinu, hvaða hlutverki gegnir curr_min
breytan?
Hver er tímaflækjan í max_subarray_long
fallinu?
Hver er tímaflækjan í max_subarray_long
fallinu?
Hvað er átt við með 'rennandi glugga' (e. sliding window) aðferðinni í samhengi við 'stutt hlutfylki' vandamálið (c)?
Hvað er átt við með 'rennandi glugga' (e. sliding window) aðferðinni í samhengi við 'stutt hlutfylki' vandamálið (c)?
Hvaða gagnagrind er notuð til að halda utan um leyfilega vísa í rennandi glugga lausninni fyrir 'stutt hlutfylki' vandamálið?
Hvaða gagnagrind er notuð til að halda utan um leyfilega vísa í rennandi glugga lausninni fyrir 'stutt hlutfylki' vandamálið?
Í lausninni fyrir 'stutt hlutfylki' vandamálið með rennandi glugga, hvers vegna er vísum sem eru utan gluggans [max(0, j − X), j − 1] fjarlægt?
Í lausninni fyrir 'stutt hlutfylki' vandamálið með rennandi glugga, hvers vegna er vísum sem eru utan gluggans [max(0, j − X), j − 1] fjarlægt?
Í lausninni fyrir 'stutt hlutfylki' vandamálið með rennandi glugga, hvert er hlutverk þess að fjarlægja P gildi hægra megin úr biðröðinni á meðan þau eru minni en P[j]?
Í lausninni fyrir 'stutt hlutfylki' vandamálið með rennandi glugga, hvert er hlutverk þess að fjarlægja P gildi hægra megin úr biðröðinni á meðan þau eru minni en P[j]?
Hvernig er möguleg lausn fundin í 'stutt hlutfylki' vandamálinu með rennandi glugga?
Hvernig er möguleg lausn fundin í 'stutt hlutfylki' vandamálinu með rennandi glugga?
Flashcards
Mótdæmi gráðugrar aðferðar
Mótdæmi gráðugrar aðferðar
Gráðug aðferð finnur ekki alltaf bestu lausnina við myntskiptivandanum.
Kerfisbundin leit
Kerfisbundin leit
Aðferð til að leysa vandamál með því að prófa allar mögulegar lausnir kerfisbundið.
Markmið myntskiptivandans
Markmið myntskiptivandans
Finna lágmarksfjölda mynta fyrir upphæð k.
Endurkvæm nálgun á myntskiptivanda
Endurkvæm nálgun á myntskiptivanda
Signup and view all the flashcards
Grunntilfelli endurkvæmni
Grunntilfelli endurkvæmni
Signup and view all the flashcards
Ógild lausn
Ógild lausn
Signup and view all the flashcards
Kvik bestun
Kvik bestun
Signup and view all the flashcards
Tafla í kvikri bestun
Tafla í kvikri bestun
Signup and view all the flashcards
Strengjaskipting
Strengjaskipting
Signup and view all the flashcards
Grunntilvik (strengjaskipting)
Grunntilvik (strengjaskipting)
Signup and view all the flashcards
dp fylki (strengjaskipting)
dp fylki (strengjaskipting)
Signup and view all the flashcards
Uppsækin lausn
Uppsækin lausn
Signup and view all the flashcards
Stærsta summa hlutstrengs
Stærsta summa hlutstrengs
Signup and view all the flashcards
Stærsta margfeldi hlutstrengs
Stærsta margfeldi hlutstrengs
Signup and view all the flashcards
Tómur hlutstrengur
Tómur hlutstrengur
Signup and view all the flashcards
Algengt viðtalsdæmi
Algengt viðtalsdæmi
Signup and view all the flashcards
Kadane reikniritið
Kadane reikniritið
Signup and view all the flashcards
local_sum
local_sum
Signup and view all the flashcards
global_sum
global_sum
Signup and view all the flashcards
local_sum uppfærsla
local_sum uppfærsla
Signup and view all the flashcards
global_sum uppfærsla
global_sum uppfærsla
Signup and view all the flashcards
Rakningarvensl Kadane
Rakningarvensl Kadane
Signup and view all the flashcards
Grunntilvik Kadane
Grunntilvik Kadane
Signup and view all the flashcards
Túlkun á rakningarvenslum
Túlkun á rakningarvenslum
Signup and view all the flashcards
Hringlaga hlutfylki
Hringlaga hlutfylki
Signup and view all the flashcards
M1
M1
Signup and view all the flashcards
T
T
Signup and view all the flashcards
m
m
Signup and view all the flashcards
M2
M2
Signup and view all the flashcards
Reiknum M1
Reiknum M1
Signup and view all the flashcards
Reiknum m
Reiknum m
Signup and view all the flashcards
Löng hlutfylki
Löng hlutfylki
Signup and view all the flashcards
Stærsta samliggjandi summa
Stærsta samliggjandi summa
Signup and view all the flashcards
O(n^3) Lausn
O(n^3) Lausn
Signup and view all the flashcards
Uppbygging O(n^3) lausnar
Uppbygging O(n^3) lausnar
Signup and view all the flashcards
Hlutsummu lausn
Hlutsummu lausn
Signup and view all the flashcards
Hlutsumma skilgreining
Hlutsumma skilgreining
Signup and view all the flashcards
Summa sviðs með hlutsummum
Summa sviðs með hlutsummum
Signup and view all the flashcards
Flækja einföldu lausnarinnar
Flækja einföldu lausnarinnar
Signup and view all the flashcards
Flækja hlutsummu lausnarinnar
Flækja hlutsummu lausnarinnar
Signup and view all the flashcards
Kvik forritun
Kvik forritun
Signup and view all the flashcards
Hlutsummu vandamál (lengd ≥ X)
Hlutsummu vandamál (lengd ≥ X)
Signup and view all the flashcards
Lausn fyrir hlutfylki (lengd ≥ X)
Lausn fyrir hlutfylki (lengd ≥ X)
Signup and view all the flashcards
Hlutsummur P
Hlutsummur P
Signup and view all the flashcards
Stutt hlutfylki
Stutt hlutfylki
Signup and view all the flashcards
Rennandi gluggi
Rennandi gluggi
Signup and view all the flashcards
Tvíenda biðröð (deque)
Tvíenda biðröð (deque)
Signup and view all the flashcards
Fjarlægja ógilda vísa
Fjarlægja ógilda vísa
Signup and view all the flashcards
Fjarlægja minni P gildi
Fjarlægja minni P gildi
Signup and view all the flashcards
Study Notes
Greining Reiknirita - Vika 5, Vor 2025
Myntskipti
- Goal is to find the minimum number of coins needed to make change for a given amount.
Example Scenario
- Given coin denominations
D = {1, 4, 7, 13, 28, 52, 91, 365}
. - Greedy Algorithm: Selects the largest possible coin that does not exceed the remaining amount, but may not yield optimal results.
- Need to find cases where the greedy approach uses more coins than necessary.
- Need to design both recursive and dynamic programming solutions.
- Recursive should prioritize correctness, not efficiency.
- Dynamic Programming solution should be optimized for performance.
Solution for counterexample against the greedy algorithm concept
- For
D = {1, 4, 7, 13, 28, 52, 91, 365}
, the smallest amount that serves as a counterexample is 416. - Greedy algorithm uses these 7 coins: 365, 28, 13, 7, 1, 1, 1
- Optimal solution needs only these 5 coins: 91, 91, 91, 91, and 52
Recursive Solution Approach
- The idea is to test each coin
d ∈ D
, and solve the subproblem for the amount k - d. - The recursive relation is defined as:
MinMyntir(k) =
-0
if k = 0
-∞
if k < 0
-min{1 + MinMyntir(k - d)}
otherwise where d ∈ D
- A python implementation is detailed in the lecture notes
Dynamic Programming Approach
- Uses kvik bestun, which avoids redundant calculations.
- The approach builds a table of results for all amounts from 0 up to k.
- For each amount
i
, the value is expressed as:
dp[i] = min{1 + dp[i – d]}
where d ∈ D
with i – d ≥ 0
- A python implementation is detailed in the lecture notes
Example key run outputs for (k = 6, D = {1, 4})
- dp[0] = 0 (base case)
- dp[1] = 1 (1)
- dp[2] = 2 (1 + 1)
- dp[3] = 3 (1 + 1 + 1)
- dp[4] = 1 (4)
- dp[5] = 2 (4 + 1)
- dp[6] = 3 (4 + 1 + 1)
Solution Comparison
- Recursive Solution: Simple to understand, but it recomputes subproblems multiple times with a time complexity of O(|D|^k).
- Dynamic Programming (Kvik Bestun): Computes each subproblem once and stores the result, has a complexity O(k|D|) and uses O(k) memory.
Strengjaskipting
- Problem involves splitting strings into valid words, as determined by a function
is_word
.
Example Problem Statement
- Given
is_word
takes strings and returns True only for valid words - Need to find the number of ways to split
A[1...n]
into valid words - For the string "ARTISTOIL" the valid splits uses the dictionary: ARTIST OIL og ART IS TOIL
- Determine if two strings,
A[1...n]
andB[1...n]
, can be split into words at the same positions - For A = "BOTHEARTHANDSATURNSPIN" and B = "PINSTARTRAPSANDRAGSLAP":
- The output is True as BOT HEART HAND SAT URNS PIN and PIN START RAPS AND RAGS LAP are valid splits with same position of words
- Count the number of different ways to split
A[1...n]
andB[1...n]
into words at the same positions
Key Take Aways
- A reminder of how to determine if a string is valid: Splitting into valid subwords is covered
- Given def splittable(s[1...n], i), we define a few key concepts
- If i > n = True
- If i is in M (the dictionary) = M[i]
- Then for j = i to n we can use is_word to determine an end index.
Recursive Approach
- Building on a recursive approach for splittable, we have
- An algorithm to determine how many ways we can perform the split: splitable
- dp[i] stores number of ways splitting from i...n
- Base dp[n+1] = 1 as there is one empty string split
- def count_splits(s, i dp = None)
Other examples include
- A bottom up solution
- Functions same split
Stærsta Summa and margfeldi hlutstrengja
- Goal is to identify both: largest sum and product of a contiguous subarray within an arr
General Context
- This is a test, it may determine: ability to process a wide variety of solutions and approaches, as well as determine understanding of complexity to fine tune solutions, using appropriate meta code.
The algorithms
- Easy approach (O(n^3)) by checking all contiguous subarrays
- Outloop: Where does the point START
- Innerloop: Where does the point END
- InnerLoop: Actual array to sum i..j
- Using prefix to obtain improved solutions: O(n^2)
- Using Kvik bestun: O(n): Kadane
Considerations
- Initial Kadane:
local_sum
best sum after the current positionglobal_sum
best sum throughout
Extending solutions to margfeldi
- Now you will also require : maximum and minumums
maximum_prod
, best multipleminimun_pod
, worst multiple
Aðrar útgáfur af hlutsummu vandamálinu
- The topic concerns other versions of problems revolving around taking a subset of array elements, adding them, and coming to conclusions.
Hringlaga fylki
- Now the array is ring shaped, that is first and last elements are neighbours.
- Valid sections can now be A[i....j] or a prefix and suffix: A[i...n], A[1....j]
Key highlights
- All ring shaped sub maps are always 1 of 2 things
- Normal type
- Fill type with regards to a normal element
A 4 step approach
- Calculate non circular
M1
to find the submap - Calculate total sum of the values
- Calculate total minimums
m
by reverse Kadane or the updated variant. 4.M2 = T-m
to find rotated submaps
- T and Kadane complexities may need further inspection
- To determine answers see the set of results and whether we can obtain a negative number
Other SubMap considerations include
- Lengthened Maps
- Short Maps
- SubMaps under a limited budget
- This may also introduce variants such as only positive numbers.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.