58 lines
6.5 KiB
Markdown
58 lines
6.5 KiB
Markdown
---
|
||
id: 5900f4cd1000cf542c50ffdf
|
||
challengeType: 5
|
||
title: 'Problem 352: Blood tests'
|
||
forumTopicId: 302012
|
||
localeTitle: 'Задача 352: Анализы крови'
|
||
---
|
||
|
||
## Description
|
||
<section id='description'>
|
||
Каждый из 25 овец в стаде должен быть проверен на наличие редкого вируса, который, как известно, влияет на 2% овец. Для образцов крови существует точный и чрезвычайно чувствительный тест ПЦР, который дает четкий положительный / отрицательный результат, но он очень трудоемкий и дорогостоящий. <p> Из-за высокой стоимости, vet-in-charge предполагает, что вместо выполнения 25 отдельных тестов можно использовать следующую процедуру: овцы разделяются на 5 групп по 5 овец в каждой группе. Для каждой группы 5 образцов смешивают вместе и проводят один тест. Затем, если результат отрицательный, все овечки в этой группе считаются безвирусными. Если результат положительный, будет проведено 5 дополнительных тестов (отдельный тест для каждого животного), чтобы определить пострадавшего человека (лиц). </p><p> Так как вероятность заражения для любого конкретного животного составляет всего 0,02, первый тест (по объединенным образцам) для каждой группы будет: Отрицательный (и больше не требуется тестов) с вероятностью 0,985 = 0,9039207968. Положительный (требуется 5 дополнительных тестов) с вероятностью 1 - 0.9039207968 = 0,0960792032. </p><p> Таким образом, ожидаемое количество тестов для каждой группы составляет 1 + 0.0960792032 × 5 = 1.480396016. Следовательно, все 5 групп могут быть экранированы с использованием в среднем только 1,480396016 × 5 = 7,40198008 тестов, что представляет собой огромную экономию более 70%! </p><p> Хотя схема, которую мы только что описали, кажется очень эффективной, ее все же можно значительно улучшить (всегда полагая, что тест достаточно чувствителен и что нет никаких побочных эффектов, вызванных смешиванием разных образцов). Например: мы можем начать с теста на смесь из всех 25 образцов. Можно проверить, что примерно в 60,35% случаев этот тест будет отрицательным, поэтому больше не потребуется никаких тестов. Дальнейшие испытания потребуются только для остальных 39,65% случаев. Если мы знаем, что по крайней мере одно животное в группе из 5 инфицировано, и первые 4 индивидуальных теста оказываются отрицательными, нет необходимости проводить тест на пятом животном (мы знаем, что он должен быть инфицирован). Мы можем попробовать различное количество групп / различное количество животных в каждой группе, регулируя эти числа на каждом уровне, чтобы общее ожидаемое количество тестов было сведено к минимуму. </p><p> Чтобы упростить очень широкий диапазон возможностей, мы устанавливаем одно ограничение при разработке самой эффективной с точки зрения затрат схемы тестирования: всякий раз, когда мы начинаем со смешанной выборки, все овцы, способствующие этому образцу, должны быть полностью экранированы (т. Е. Вердикт инфицированных / без вируса должны быть достигнуты для всех), прежде чем мы начнем изучение любых других животных. </p><p> В текущем примере выясняется, что самая экономичная схема тестирования (мы будем называть ее оптимальной стратегией) требует в среднем всего лишь 4.155452 тестов! </p><p> Используя оптимальную стратегию, пусть T (s, p) представляет среднее число тестов, необходимых для скрининга стаи овец для вируса с вероятностью p, присутствующей у любого человека. Таким образом, округленные до шести знаков после запятой, T (25, 0,02) = 4,155452 и T (25, 0,10) = 12,702124. </p><p> Найти ΣT (10000, p) для p = 0,01, 0,02, 0,03, ... 0,50. Дайте ваш ответ округленным до шести знаков после запятой. </p>
|
||
</section>
|
||
|
||
## Instructions
|
||
<section id='instructions'>
|
||
|
||
</section>
|
||
|
||
## Tests
|
||
<section id='tests'>
|
||
|
||
```yml
|
||
tests:
|
||
- text: <code>euler352()</code> should return 378563.260589.
|
||
testString: assert.strictEqual(euler352(), 378563.260589);
|
||
|
||
```
|
||
|
||
</section>
|
||
|
||
## Challenge Seed
|
||
<section id='challengeSeed'>
|
||
|
||
<div id='js-seed'>
|
||
|
||
```js
|
||
function euler352() {
|
||
// Good luck!
|
||
return true;
|
||
}
|
||
|
||
euler352();
|
||
|
||
```
|
||
|
||
</div>
|
||
|
||
</section>
|
||
|
||
## Solution
|
||
<section id='solution'>
|
||
|
||
```js
|
||
// solution required
|
||
```
|
||
|
||
</section>
|