2004-gre-cs-practice-book.pdf/Q34 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q34-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…») |
StasFomin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q34-4c9f66 == | == Вопрос: Q34-4c9f66 == | ||
+ | Для следующего кода выполняемость любого блока в условных ветках показано | ||
+ | на графе потока управления, с вероятностью выполнения условия на ребрах. | ||
− | + | Например, логическое выражение ''if_condition'' принимает значение ''true'' в половине случаев. | |
− | + | ||
− | + | ||
− | + | ||
− | === | + | {{SideBar40|<graph> |
− | + | digraph G{ | |
− | + | edge [color=blue] | |
+ | node [shape=box] | ||
+ | |||
+ | U->W [label="1/2"] | ||
+ | U->V [label="1/2"] | ||
+ | V->Y [label="1/2"] | ||
+ | V->X [label="1/2"] | ||
+ | X->Y [label="1/3"] | ||
+ | W->X [label="1"] | ||
+ | X->U [label="1/3"] | ||
+ | } | ||
+ | </graph>}} | ||
− | + | <code-c> | |
− | + | do | |
− | + | { | |
− | + | U; | |
− | + | if (if_condition) | |
+ | { | ||
+ | V; | ||
+ | if (break_condition) | ||
+ | break; | ||
+ | } | ||
+ | else | ||
+ | W; | ||
+ | X; | ||
+ | } while (loop_condition); | ||
+ | Y; | ||
+ | </code-c> | ||
− | + | Какое ожидаемое количество раз выполняется ''U''? | |
− | + | ||
− | + | ||
+ | === Ответы === | ||
+ | * 0.5 | ||
+ | * 1 | ||
+ | * 1.5 | ||
+ | * Правильный ответ: 2 | ||
+ | * Больше 10 | ||
=== Объяснение === | === Объяснение === | ||
− | <i> | + | В оригинале было 2/3 вместо 1/3, но это точно ошибка. Если поправить, как мы сделали, то |
− | {{cstest-source|2004-gre-cs-practice-book.pdf| | + | |
+ | <code-python> | ||
+ | from sympy import symbols, summation, oo, simplify | ||
+ | i = symbols('i') | ||
+ | expr = summation(((1/2+1/2 + 1/2*1)*1/3)**i, (i, 0, oo)) | ||
+ | simplified_expr = simplify(expr) | ||
+ | print(simplified_expr) | ||
+ | </code-python> | ||
+ | |||
+ | Можно размышлять примерно — ну точно больше 1, и меньше 10 — там если расходимость будет то сразу бесконечность. Ну и на глаз прикинуть, что 1.5 — маловато. | ||
+ | |||
+ | {{cstest-source|2004-gre-cs-practice-book.pdf|27|34}} | ||
− | + | {{question-ok|[[Участник:StasFomin|StasFomin]] 18:27, 14 декабря 2024 (UTC)}} | |
− | + | [[Категория:Вероятностные алгоритмы]] |
Текущая версия на 18:27, 14 декабря 2024
Вопрос: Q34-4c9f66
Для следующего кода выполняемость любого блока в условных ветках показано на графе потока управления, с вероятностью выполнения условия на ребрах.
Например, логическое выражение if_condition принимает значение true в половине случаев.
do { U; if (if_condition) { V; if (break_condition) break; } else W; X; } while (loop_condition); Y;
Какое ожидаемое количество раз выполняется U?
Ответы
- 0.5
- 1
- 1.5
- Правильный ответ: 2
- Больше 10
Объяснение
В оригинале было 2/3 вместо 1/3, но это точно ошибка. Если поправить, как мы сделали, то
from sympy import symbols, summation, oo, simplify i = symbols('i') expr = summation(((1/2+1/2 + 1/2*1)*1/3)**i, (i, 0, oo)) simplified_expr = simplify(expr) print(simplified_expr)
Можно размышлять примерно — ну точно больше 1, и меньше 10 — там если расходимость будет то сразу бесконечность. Ну и на глаз прикинуть, что 1.5 — маловато.
Исходники — вопрос 34 на 27 странице книги «2004-gre-cs-practice-book.pdf»