programmeren ik 2019
play

Programmeren IK 2019 Jelle van Assema Vorige week Jupyter - PowerPoint PPT Presentation

Programmeren IK 2019 Jelle van Assema Vorige week Jupyter Notebook Comprehensions File IO Deze week Oefenen met alles Python Constructieve zoekalgoritmes Recursie Wachtwoord kraken 10 x 10 x 26 x 26 x 26 x 10


  1. Programmeren IK 2019 Jelle van Assema

  2. Vorige week ● Jupyter Notebook ● Comprehensions ● File IO

  3. Deze week ● Oefenen met alles Python ● Constructieve zoekalgoritmes ● Recursie

  4. Wachtwoord kraken

  5. 10 x 10 x 26 x 26 x 26 x 10 17,576,000

  6. Een wachtwoord van 10 tekens, bestaande uit: ● Letters (groot en klein) ● Cijfers ● De tekens: ! , .

  7. Een wachtwoord van 10 tekens, bestaande uit: ● Letters (groot en klein) ● Cijfers ● De tekens: ! , . (26 + 26 + 10 + 3) 10 1.3462743 * 10 18

  8. Een wachtwoord van 10 tekens kraken? Bij 1 miljard wachtwoorden per seconde: (1.3462743 * 10 18 ) / 10 9 = 1.3462743 * 10 9 seconden 373965 uur 42.69 jaar

  9. Een wachtwoord van 10 tekens kraken? Wachtwoorden zijn vaak niet willekeurig. In praktijk: ● Patronen ● Dictionary attacks ● 0000

  10. Sudoku’s Een bord van 9 x 9, met elk op vakje 9 mogelijkheden 9 81 1.9662705 * 10 77

  11. 1.9662705 * 10 77 It is estimated that there are between 10 78 to 10 82 atoms in the known, observable universe.

  12. 1.9662705 * 10 77 6,670,903,752,021,072,936,9 60 / (2.9475324 * 10 55 )

  13. Sudoku’s oplossen Probleemgrootte is maar een fractie van: 6,670,903,752,021,072,936,960

  14. Sudoku’s oplossen ● 51 lege vakjes ● 9 51 mogelijkheden toch? ● Dat zijn 6.9531773 * 10 26 keer zoveel mogelijkheden dan er sudoku’s bestaan

  15. Sudoku’s oplossen ● 51 lege vakjes ● Naïeve manier van oplossen ● Manier voor doorzoeken met enkel geldige sudoku’s.

  16. Constructief oplossen ● Een opbouwende manier van gestructureerd zoeken ● Naïeve manier van oplossen ● Manier voor doorzoeken met enkel geldige sudoku’s.

  17. Constructief oplossen ● Een opbouwende manier van gestructureerd zoeken ● Naïeve manier van oplossen ● Manier voor doorzoeken met enkel geldige sudoku’s.

  18. 1

  19. Breadth-First Search (BFS) 1 2 4

  20. Breadth-First Search (BFS) 1 2 4 1 2 4 1 2 4

  21. Breadth-First Search (BFS) 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4

  22. Depth-First Search (DFS) 1 2 4

  23. Depth-First Search (DFS) 1 2 4 1 2 4 1 2 4

  24. DFS BFS

  25. Wachtwoord kraken

  26. DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  27. V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  28. S V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  29. S V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  30. S V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  31. S V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do 10 return W 11 S.push(W)

  32. S V DFS algoritme 1 function DFS(V) 2 let S be a stack 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do C 10 return W 1 11 S.push(W)

  33. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do C 10 return W 1 11 S.push(W)

  34. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 1 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do C 10 return W 1 11 S.push(W)

  35. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 1 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 9 if W is a solution do C 10 return W 1 11 S.push(W)

  36. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 1 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 1 11 S.push(W)

  37. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 1 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 2 11 S.push(W)

  38. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 2 11 S.push(W)

  39. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 2 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 2 11 S.push(W)

  40. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 2 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 2 11 S.push(W)

  41. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 2 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 2 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 2 11 S.push(W)

  42. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 2 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 2 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 4 11 S.push(W)

  43. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 2 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 4 11 S.push(W)

  44. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 4 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 2 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 4 11 S.push(W)

  45. S V DFS algoritme 1 function DFS(V) 2 let S be a stack W 3 S.push(V) 4 4 while S is not empty 5 V = S.pop() 6 for all candidates C from V do 2 7 let W be a copy of V 8 apply C to W 1 9 if W is a solution do C 10 return W 4 11 S.push(W)

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend