{"id":"informatyka-2015-maj-matura-rozszerzona/zad/1.1","paper_id":"informatyka-2015-maj-matura-rozszerzona","number":"1.1","points":2,"ptype":"open","subject":"informatyka","category":"matura","year":2015,"month":"maj","level":"rozszerzona","text":"Zadanie 1.1. (0-2)\nDla\npodanego\nprogramu\ntelewizyjnego\npodaj\nwyniki\nwykonywania\nalgorytmu\npo zastosowaniu strategii B, C i D:\nStrategia S\nZawartość zbioru P po zakończeniu wykonywania algorytmu\nB\nC\nD\nMiejsce na obliczenia.\nWypełnia\negzaminator\nNr zadania\n1.1.\nMaks. liczba pkt.\n2\nUzyskana liczba pkt.\nMIN_1R","answer":null,"answer_text":"Zadanie 1.1. (0-2)\nWymagania ogólne\nWymagania szczegółowe\nIII. Rozwiązywanie problemów\ni podejmowanie decyzji z wykorzystaniem\nkomputera, z zastosowaniem podejścia\nalgorytmicznego.\nZdający stosuje podejście algorytmiczne\ndo rozwiązywania problemu (5.2.).\nZdający opracowuje i przeprowadza wszystkie etapy\nprowadzące do otrzymania poprawnego rozwiązania\nproblemu: od sformułowania specyfikacji problemu\npo testowanie rozwiązania (5.7.).\nPoprawna odpowiedź\nstrategia B: P={ film 5, film 2 }\nstrategia C: P={ film 1, film 4, film 2 }\nstrategia D: P={ film 1, film 4, film 2 }\nSchemat punktowania\n2 p. - za podanie poprawnych odpowiedzi dla trzech strategii.\n1 p. - za podanie poprawnych odpowiedzi dla dwóch strategii.\n0 p. - za odpowiedź niepełną lub błędną albo za brak odpowiedzi.","solution":"## Poprawna odpowiedź\n\n| Strategia | Zbiór P |\n| B (najkrótszy, najwcześniej kończący) | **{film 5, film 2}** |\n| C (najwcześniej zaczynający się, najwcześniej kończący) | **{film 1, film 4, film 2}** |\n| D (najwcześniej kończący, najpóźniej zaczynający) | **{film 1, film 4, film 2}** |\n\n## Sposób 1 - symulacja krok po kroku\n\nLista filmów:\n- film 1: 9:00-12:00 (3 h)\n- film 2: 15:00-17:00 (2 h)\n- film 3: 11:00-16:00 (5 h)\n- film 4: 12:00-14:00 (2 h)\n- film 5: 11:30-12:30 (1 h)\n\n**Strategia B - najkrótszy, w razie remisu najwcześniej kończący**\n\n1. Najkrótszy film: **film 5** (1 h). Dodaj do P. Usuń kolidujące: film 1 (9-12 koliduje z 11:30-12:30), film 3 (11-16), film 4 (12-14 - 12:00 to wciąż w 11:30-12:30? Wg konwencji 12:00 = koniec film 5, ale film 4 zaczyna o 12:00 - KOLIZJA gdy [a,b) lub przy zachodzeniu - przyjmujemy NIE koliduje z film 5 bo 12:00 to brzeg).\n- Dokładniej: film 5 trwa do 12:30, film 4 zaczyna o 12:00 → KOLIZJA. Film 4 usunięty.\n- Pozostaje: film 2.\n2. Film 2 jest najkrótszy spośród pozostałych. Dodaj do P. Brak kolizji.\n3. Koniec. **P = {film 5, film 2}** (2 filmy).\n\n**Strategia C - najwcześniej zaczynający się, najwcześniej kończący**\n\n1. Najwcześniej zaczyna film 1 (9:00). Dodaj. Usuń kolidujące: film 3 (11:00 koliduje), film 5 (11:30 koliduje).\n- Pozostaje: film 2 (15-17), film 4 (12-14).\n2. Z pozostałych najwcześniej zaczyna film 4 (12:00). Dodaj. Brak kolizji z film 2.\n3. Pozostaje film 2. Dodaj.\n4. **P = {film 1, film 4, film 2}** (3 filmy).\n\n**Strategia D - najwcześniej kończący, w razie remisu najpóźniej zaczynający**\n\n1. Czasy zakończenia: film 1 → 12, film 5 → 12:30, film 4 → 14, film 3 → 16, film 2 → 17.\nNajwcześniej kończy film 1 (12:00). Dodaj. Usuń kolidujące: film 3 (11-16 koliduje), film 5 (11:30-12:30 koliduje).\n- Pozostaje: film 2, film 4.\n2. Najwcześniej kończy film 4 (14:00). Dodaj. Brak kolizji z film 2.\n3. Pozostaje film 2. Dodaj.\n4. **P = {film 1, film 4, film 2}** (3 filmy).\n\n## Sposób 2 - implementacja Python\n\n```python\nfilmy = {\n'film 1': (9.0, 12.0),\n'film 2': (15.0, 17.0),\n'film 3': (11.0, 16.0),\n'film 4': (12.0, 14.0),\n'film 5': (11.5, 12.5),\n}\n\ndef koliduje(a, b):\ns1, e1 = a; s2, e2 = b\nreturn s1 < e2 and s2 < e1\n\ndef algorytm(filmy, klucz):\nT = dict(filmy)\nP = []\nwhile T:\nnazwa = min(T, key=lambda x: klucz(x, T[x]))\nP.append(nazwa)\nwybrany = T.pop(nazwa)\nT = {n: t for n, t in T.items() if not koliduje(t, wybrany)}\nreturn P\n\n# Strategia B: najkrótszy, w remisie najwcześniej kończący\nklucz_B = lambda n, t: (t[1] - t[0], t[1])\n# Strategia C: najwcześniej zaczynający, w remisie najwcześniej kończący\nklucz_C = lambda n, t: (t[0], t[1])\n# Strategia D: najwcześniej kończący, w remisie najpóźniej zaczynający\nklucz_D = lambda n, t: (t[1], -t[0])\n\nprint('B:', algorytm(filmy, klucz_B))\nprint('C:', algorytm(filmy, klucz_C))\nprint('D:', algorytm(filmy, klucz_D))\n\nWynik: B = ['film 5', 'film 2'], C = ['film 1', 'film 4', 'film 2'], D = ['film 1', 'film 4', 'film 2'].\n\n## Reference informatyczny - problem wyboru aktywności (greedy)\n\n> Reference - Activity Selection Problem:\n> - Klasyczny problem: dany zbiór przedziałów, wybierz **najwięcej niekolidujących**.\n> - **Optymalna strategia zachłanna**: sortuj wg czasu zakończenia rosnąco, bierz pierwszy, usuń kolidujące, powtarzaj. To jest strategia D.\n> - Złożoność: O(n log n) (sortowanie) + O(n) (wybór).\n> - Strategie A, B, C nie są optymalne - łatwo skonstruować kontrprzykład.\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 1.1, max 2 pkt):\n> - **2 pkt** - poprawne odpowiedzi dla trzech strategii\n> - **1 pkt** - poprawne odpowiedzi dla dwóch strategii\n> - **0 pkt** - niepełna lub błędna albo brak\n\n## Typowe pułapki\n\n- Pomylenie kolizji na brzegach (czy 12:00-14:00 koliduje z 11:00-12:00?) - w klasycznym problemie aktywności **NIE koliduje** gdy się stykają (przedziały półotwarte [a,b)).\n- Strategia B - film 5 jest najkrótszy (1 h) i wyklucza film 4, więc wynik tylko 2 filmy.\n- Strategia C i D dają ten sam wynik dla tego programu, ale to przypadek - C nie jest optymalna w ogólności.\n- Nieusunięcie wszystkich kolidujących po wyborze.\n\n## Złożoność obliczeniowa\n\n- Algorytm greedy: **O(n²)** przy naiwnej implementacji (każdy wybór + usuwanie).\n- **O(n log n)** przy sortowaniu i jednym przejściu.","image":"img/informatyka-2015-maj-matura-rozszerzona/zad-1.1.webp","solution_image":null,"topics":null,"page_from":3,"source":"ocr","answer_source":null,"answer_text_source":"ocr","solution_source":"maturazai","text_source":"ocr","source_label":"Informatyka · Matura · maj 2015 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 1.1. (0-2)<br>Dla<br>podanego<br>programu<br>telewizyjnego<br>podaj<br>wyniki<br>wykonywania<br>algorytmu<br>po zastosowaniu strategii B, C i D:<br>Strategia S<br>Zawartość zbioru P po zakończeniu wykonywania algorytmu<br>B<br>C<br>D<br>Miejsce na obliczenia.<br>Wypełnia<br>egzaminator<br>Nr zadania<br>1.1.<br>Maks. liczba pkt.<br>2<br>Uzyskana liczba pkt.<br>MIN_1R</p>","answer_text_html":"<p>Zadanie 1.1. (0-2)<br>Wymagania ogólne<br>Wymagania szczegółowe<br>III. Rozwiązywanie problemów<br>i podejmowanie decyzji z wykorzystaniem<br>komputera, z zastosowaniem podejścia<br>algorytmicznego.<br>Zdający stosuje podejście algorytmiczne<br>do rozwiązywania problemu (5.2.).<br>Zdający opracowuje i przeprowadza wszystkie etapy<br>prowadzące do otrzymania poprawnego rozwiązania<br>problemu: od sformułowania specyfikacji problemu<br>po testowanie rozwiązania (5.7.).<br>Poprawna odpowiedź<br>strategia B: P={ film 5, film 2 }<br>strategia C: P={ film 1, film 4, film 2 }<br>strategia D: P={ film 1, film 4, film 2 }<br>Schemat punktowania<br>2 p. - za podanie poprawnych odpowiedzi dla trzech strategii.<br>1 p. - za podanie poprawnych odpowiedzi dla dwóch strategii.<br>0 p. - za odpowiedź niepełną lub błędną albo za brak odpowiedzi.</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p>| Strategia | Zbiór P |<br>| B (najkrótszy, najwcześniej kończący) | <strong>{film 5, film 2}</strong> |<br>| C (najwcześniej zaczynający się, najwcześniej kończący) | <strong>{film 1, film 4, film 2}</strong> |<br>| D (najwcześniej kończący, najpóźniej zaczynający) | <strong>{film 1, film 4, film 2}</strong> |</p>\n<h4>Sposób 1 - symulacja krok po kroku</h4>\n<p>Lista filmów:</p>\n<ul><li>film 1: 9:00-12:00 (3 h)</li><li>film 2: 15:00-17:00 (2 h)</li><li>film 3: 11:00-16:00 (5 h)</li><li>film 4: 12:00-14:00 (2 h)</li><li>film 5: 11:30-12:30 (1 h)</li></ul>\n<p><strong>Strategia B - najkrótszy, w razie remisu najwcześniej kończący</strong></p>\n<ol><li>Najkrótszy film: <strong>film 5</strong> (1 h). Dodaj do P. Usuń kolidujące: film 1 (9-12 koliduje z 11:30-12:30), film 3 (11-16), film 4 (12-14 - 12:00 to wciąż w 11:30-12:30? Wg konwencji 12:00 = koniec film 5, ale film 4 zaczyna o 12:00 - KOLIZJA gdy [a,b) lub przy zachodzeniu - przyjmujemy NIE koliduje z film 5 bo 12:00 to brzeg).</li></ol>\n<ul><li>Dokładniej: film 5 trwa do 12:30, film 4 zaczyna o 12:00 → KOLIZJA. Film 4 usunięty.</li><li>Pozostaje: film 2.</li></ul>\n<ol><li>Film 2 jest najkrótszy spośród pozostałych. Dodaj do P. Brak kolizji.</li><li>Koniec. <strong>P = {film 5, film 2}</strong> (2 filmy).</li></ol>\n<p><strong>Strategia C - najwcześniej zaczynający się, najwcześniej kończący</strong></p>\n<ol><li>Najwcześniej zaczyna film 1 (9:00). Dodaj. Usuń kolidujące: film 3 (11:00 koliduje), film 5 (11:30 koliduje).</li></ol>\n<ul><li>Pozostaje: film 2 (15-17), film 4 (12-14).</li></ul>\n<ol><li>Z pozostałych najwcześniej zaczyna film 4 (12:00). Dodaj. Brak kolizji z film 2.</li><li>Pozostaje film 2. Dodaj.</li><li><strong>P = {film 1, film 4, film 2}</strong> (3 filmy).</li></ol>\n<p><strong>Strategia D - najwcześniej kończący, w razie remisu najpóźniej zaczynający</strong></p>\n<ol><li>Czasy zakończenia: film 1 → 12, film 5 → 12:30, film 4 → 14, film 3 → 16, film 2 → 17.</li></ol>\n<p>Najwcześniej kończy film 1 (12:00). Dodaj. Usuń kolidujące: film 3 (11-16 koliduje), film 5 (11:30-12:30 koliduje).</p>\n<ul><li>Pozostaje: film 2, film 4.</li></ul>\n<ol><li>Najwcześniej kończy film 4 (14:00). Dodaj. Brak kolizji z film 2.</li><li>Pozostaje film 2. Dodaj.</li><li><strong>P = {film 1, film 4, film 2}</strong> (3 filmy).</li></ol>\n<h4>Sposób 2 - implementacja Python</h4>\n<p>```python<br>filmy = {<br>&#x27;film 1&#x27;: (9.0, 12.0),<br>&#x27;film 2&#x27;: (15.0, 17.0),<br>&#x27;film 3&#x27;: (11.0, 16.0),<br>&#x27;film 4&#x27;: (12.0, 14.0),<br>&#x27;film 5&#x27;: (11.5, 12.5),<br>}</p>\n<p>def koliduje(a, b):<br>s1, e1 = a; s2, e2 = b<br>return s1 &lt; e2 and s2 &lt; e1</p>\n<p>def algorytm(filmy, klucz):<br>T = dict(filmy)<br>P = []<br>while T:<br>nazwa = min(T, key=lambda x: klucz(x, T[x]))<br>P.append(nazwa)<br>wybrany = T.pop(nazwa)<br>T = {n: t for n, t in T.items() if not koliduje(t, wybrany)}<br>return P</p>\n<h3>Strategia B: najkrótszy, w remisie najwcześniej kończący</h3>\n<p>klucz_B = lambda n, t: (t[1] - t[0], t[1])</p>\n<h3>Strategia C: najwcześniej zaczynający, w remisie najwcześniej kończący</h3>\n<p>klucz_C = lambda n, t: (t[0], t[1])</p>\n<h3>Strategia D: najwcześniej kończący, w remisie najpóźniej zaczynający</h3>\n<p>klucz_D = lambda n, t: (t[1], -t[0])</p>\n<p>print(&#x27;B:&#x27;, algorytm(filmy, klucz_B))<br>print(&#x27;C:&#x27;, algorytm(filmy, klucz_C))<br>print(&#x27;D:&#x27;, algorytm(filmy, klucz_D))</p>\n<p>Wynik: B = [&#x27;film 5&#x27;, &#x27;film 2&#x27;], C = [&#x27;film 1&#x27;, &#x27;film 4&#x27;, &#x27;film 2&#x27;], D = [&#x27;film 1&#x27;, &#x27;film 4&#x27;, &#x27;film 2&#x27;].</p>\n<h4>Reference informatyczny - problem wyboru aktywności (greedy)</h4>\n<blockquote>Reference - Activity Selection Problem:<br>- Klasyczny problem: dany zbiór przedziałów, wybierz <strong>najwięcej niekolidujących</strong>.<br>- <strong>Optymalna strategia zachłanna</strong>: sortuj wg czasu zakończenia rosnąco, bierz pierwszy, usuń kolidujące, powtarzaj. To jest strategia D.<br>- Złożoność: O(n log n) (sortowanie) + O(n) (wybór).<br>- Strategie A, B, C nie są optymalne - łatwo skonstruować kontrprzykład.</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 1.1, max 2 pkt):<br>- <strong>2 pkt</strong> - poprawne odpowiedzi dla trzech strategii<br>- <strong>1 pkt</strong> - poprawne odpowiedzi dla dwóch strategii<br>- <strong>0 pkt</strong> - niepełna lub błędna albo brak</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li>Pomylenie kolizji na brzegach (czy 12:00-14:00 koliduje z 11:00-12:00?) - w klasycznym problemie aktywności <strong>NIE koliduje</strong> gdy się stykają (przedziały półotwarte [a,b)).</li><li>Strategia B - film 5 jest najkrótszy (1 h) i wyklucza film 4, więc wynik tylko 2 filmy.</li><li>Strategia C i D dają ten sam wynik dla tego programu, ale to przypadek - C nie jest optymalna w ogólności.</li><li>Nieusunięcie wszystkich kolidujących po wyborze.</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>Algorytm greedy: <strong>O(n²)</strong> przy naiwnej implementacji (każdy wybór + usuwanie).</li><li><strong>O(n log n)</strong> przy sortowaniu i jednym przejściu.</li></ul>"}]}