Бинарные тесты - деревья решений, как в игре "Угадай животное"

27.10.25

Разработка - Математика и алгоритмы

Бинарные тесты, или деревья решений, основанные на вопросах "Да/Нет", являются невероятно мощным и универсальным инструментом, который находит применение в самых разных областях, от простых развлечений до сложных корпоративных систем. Их главная сила — в способности систематически и эффективно сужать огромное количество вариантов до одного-единственного правильного ответа, направляя пользователя по логическому пути.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Бесплатно
Бинарные тесты - деревья решений
.zip 33,36Mb ver:1.0.0.1
1 Скачать бесплатно

Применение в работе службы поддержки и технической диагностике

 

Это одно из самых классических и эффективных применений бинарного дерева. Представьте, что клиент обращается в службу поддержки с общей проблемой: "У меня не работает интернет". Оператор поддержки, особенно если он новичок, может растеряться. Однако, если у него есть сценарий, построенный по принципу бинарного дерева, процесс становится стандартизированным и безошибочным.

Как это работает:

Система (или сценарий для оператора) задает последовательность простых вопросов:

  1. "Проверьте ваш роутер. Горит ли на нем индикатор питания?"

    • НЕТ: "Пожалуйста, убедитесь, что кабель питания плотно вставлен в роутер и в розетку. Загорелся ли индикатор?" (Это новая ветка дерева).

    • ДА: "Отлично. Посмотрите на индикатор с символом глобуса или надписью 'Internet'. Он горит или мигает?"

      • НЕТ: "Вероятно, проблема на линии у провайдера или с кабелем, идущим в квартиру. Давайте попробуем перезагрузить роутер..."

      • ДА: "Значит, связь с провайдером есть. Откройте браузер. Можете ли вы зайти на сайт google.com?"

Каждый ответ отсекает целые пласты возможных неисправностей (проблемы с питанием, проблемы с линией, проблемы с устройством клиента) и быстро ведет к наиболее вероятной причине. Такой подход позволяет не только ускорить решение проблемы, но и снизить требования к квалификации операторов первой линии, так как им не нужно держать в голове все возможные сценарии — им нужно лишь следовать по веткам дерева.

 

Игровые и развлекательные приложения

Это вторая большая область, где бинарные деревья раскрываются в полной мере. Самый известный пример — игра "Угадай животное", которую я реализовал, или популярное приложение Akinator, которое угадывает любого персонажа.

Как это работает:

В основе лежит та же логика: программа пытается идентифицировать объект из огромной базы данных, задавая вопросы, которые делят все возможные варианты на две группы.

  • "Ваш персонаж реальный человек?" (Отсекается половина базы данных — все вымышленные персонажи).

  • "Ваш персонаж женщина?" (Оставшаяся часть делится еще пополам).

  • "Ваш персонаж связан с политикой?"

Сила этого метода в том, что с каждым вопросом пространство поиска сужается вдвое. Чтобы выбрать один вариант из тысячи, в идеальном случае потребуется всего 10 вопросов (2^10 = 1024). Это делает игру быстрой и создает у пользователя "магическое" ощущение, что программа его понимает. Более того, такие игры могут "обучаться": если программа не угадала, она просит пользователя ввести правильный ответ и задать вопрос, который отличает его от неправильного предположения. Таким образом, программа добавляет в свое дерево новый узел и новую ветку, становясь "умнее".

 

Другие важные сферы применения:

  • Медицинская диагностика (экспертные системы): Простые системы помощи врачам могут быть построены на деревьях решений. "У пациента есть температура выше 38°C?" -> "Есть ли кашель?" -> "Кашель сухой или с мокротой?". Это помогает систематизировать сбор анамнеза и не упустить важные симптомы.

  • Подбор товаров и услуг (онлайн-магазины): Виджеты "Помочь с выбором?" на сайтах часто используют именно бинарную логику. "Вам нужен ноутбук для игр?" -> "Важен ли для вас вес менее 1.5 кг?" -> "Бюджет больше 100 000 рублей?". Это помогает покупателю не потеряться в огромном каталоге и быстро найти подходящий товар.

  • Системы кадрового отбора (HR): Первичный скрининг кандидатов можно автоматизировать. "У кандидата есть высшее техническое образование?" -> "Опыт работы в сфере более 3 лет?" -> "Владеет ли английским на уровне Upper-Intermediate?". Это позволяет автоматически отсеивать заведомо неподходящие резюме.

  • Это идеально подходит для реализации интерактивных помощников прохождения сценариев , например технической диагностики ("помощник по устранению неисправностей"), определения потребностей ("помощник по выбору продукта") или для прохождения интерактивных обучающих курсов.
     

Таким образом, бинарный тест — это не просто игра, а фундаментальный подход к решению задач классификации и диагностики, который делает сложные процессы простыми, управляемыми и эффективными. Надеюсь применить этот подход в CRM. Развитие точно будет. Пока что только альфа, очень много отладочной информации и отдельный модуль с очень большим количеством unit-тестов.

В моей конфигурации применяется модуль динамического формирования интерфейса //infostart.ru/1c/articles/1284403/
Фундамент, от которого я отталкивался, и от которого практически ничего не осталось в финале это Конфигурация "Тестирование респондентов" за которую большое спасибо Drak0nу. Интегрировать не стал, но оставил возможность.

Интерфейс пользователя и движок реализованы с нуля. Для второстепенных аспектов используется БСП. Редактирование базы основано исключительно на типовом функционале 1С.

 

Экскурс в детали

Пока я ознакомлю с правильным порядком действий, потому что в альфе всё что угодно у Вас может не получиться.

1. Заходим в справочник Шаблоны бинарных деревьев. В справочнике шаблонов вводим и систематизируем каталог бинарных деревьев, которые хранятся в нашей базе знаний.


 

2. В справочнике шаблонов реализованы шаблоны со ссылками на готовые деревья тестов (сами деревья хранятся в нормализованной базе знаний в регистрах сведений). Кнопка "Тест" создает структуру дерева "Угадай животное" и заносит её в базу. Записываем шаблон. Диагностической информации пока что много, извините, если неудобно.

 

 

3. Прокручиваем данную форму вниз - в ней выводится общая статистика и само шаблонное дерево вопросов и ответов в виде картинки.

 

 

4. В самом низу есть команды "Проверить целостность", "Экспорт в текстовый файл", "Статистика", "Обновить отображение". Мы нажимаем "Создать на основании - Назначение опроса".

 

 

5. В форме списка документов "Назначение опроса" выбираем тип респондента пользователь и нажимаем Подобрать. Опрос это административный документ, с помощью которого выполняем назначение теста конкретному пользователю.

 

 

6. Выбираем пользователя из списка, записываем и проводим документ Назначение опроса. Опрос появятся в списке доступных для выполнения на начальной странице программы у авторизованного пользователя.

 

 

7. Нажимаем опрос, который хотим пройти на начальной странице программы. Если пользователем будет оператор и назвать опросы "Не работает интернет", "Не работает почта"... то получится служба поддержки. Документ тест это экземпляр конкретных ответов пользователя в данный момент связанный с событием прохождения - выполнения теста, который создается на основании опроса.

 

 

8. Открывается документ "Тест бинарное дерево" (новый документ - экземпляр прохождения, привязанный к пользователю-исполнителю и ко времени выполнения) на корневом (начальном) узле дерева вопросов - пользователь видит свой первый вопрос. Внизу под вопросом выводится история ответов пользователя.

 

 

9. Отвечаем например "Да" и видим следующий вопрос, а прошлый ответ попадает в историю.


 

10. Когда потенциал базы знаний исчерпан и мы попадаем на лист дерева решений, вариантов для выбора больше нет, выводится  итог - наименование листового узла.

 

 

11.  обработка "Проверка тестов" позволяет ознакомиться с завершенными результатами. Она может быть запущена из интерфейса "Главное - Проверка тестов". 

 

Основные возможности:

 

  1. Выбор теста для анализа: В верхней части формы расположено поле "Тест", в котором пользователь может выбрать любой документ ТестБинарноеДерево из системы.

  2. Просмотр точной последовательности шагов, которые прошел пользователь. Этот режим не предназначен для ручной оценки, а служит для анализа логического пути респондента.

  • Визуализация: На экране отображается хронологическая история ответов в виде простого списка. Каждая строка содержит:

    • Порядковый номер шага.

    • Текст вопроса, который был задан.

    • Ответ пользователя ("-> Да" или "-> Нет").

  • Отображение результата: Если тест был завершен (пользователь дошел до финального узла), в конце списка выводится итоговый результат, например: ИТОГ: Это кит?.

  • Интерфейс: В этом режиме элементы для ручной оценки (поле для выставления оценки "Правильность" и кнопка "Оценить") автоматически скрываются, так как они не применимы к бинарной логике.

Пример вывода:

 

 

Описанная система хорошо протестирована и работает. Приветствуются замечания и выявленные проблемы классического функционала. Развитие точно будет.

 

TODO-лист

 
 Решается задача: Реализовать механизм самообучения дерева с модерацией.

 

Реализовано на платформе 1С:Предприятие 8.3 (8.3.27.1559) Версия для разработчиков.
Разработка (модуль) называется "Бинарные тесты - деревья решений", версия 1.0 (1.0.0.1)
(https:// infostart.ru/profile/318390/), на Инфостарт выложена для скачивания полная информационная база со всеми полученными в процессе разработки тестовыми данными.

Адрес проекта на Гитхаб (там можно ознакомиться с исходным кодом конфигурации и скачать ее БинарныеТестыДеревьяРешений.cf):
https://github.com/Menestre1/binary-tests-decision-trees

 

РЕЗЮМЕ

Рад представить Вам первую версию нового модуля "Бинарные тесты - деревья решений". Этот инструмент разработан для создания и прохождения интерактивных тестов и сценариев, построенных по принципу дерева решений с ответами "Да/Нет".

Основная цель модуля — предоставить гибкий инструмент для диагностики, обучения и проверки знаний, где каждый следующий шаг зависит от предыдущего ответа пользователя.

1. Вид тестирования "Бинарное дерево". В отличие от обычных тестов со списком вопросов, эти тесты представляют собой интерактивный диалог. Вы запускаете тест, и система задает вам первый вопрос. Вы отвечаете "Да" или "Нет". В зависимости от вашего ответа, система задает следующий уточняющий вопрос, и так далее, пока не придет к финальному выводу или результату.
История ответов: Весь ваш путь по "веткам" дерева решений отображается в специальном поле "История ответов", чтобы вы всегда могли видеть, как пришли к текущему вопросу.
Результат: По завершении теста система показывает итоговый результат, к которому вы пришли, следуя по сценарию.

2. Администраторы и создатели тестов работают со справочником "Шаблоны бинарных деревьев", в котором они управляют сценариями тестирования. В отличие от старых "плоских" тестов, здесь вы создаете не просто список вопросов, а структуру связей между ними. Динамическая структура: Вы можете создавать "деревья" любой сложности. Каждый узел в дереве — это либо вопрос, либо финальный ответ (например, "Проблема решена" или "Необходимо заменить деталь").
Форма элемента справочника "Шаблоны бинарных деревьев" наглядно отображает всю структуру созданного дерева в текстовом виде. Вы можете видеть все ветки "Да" и "Нет" и легко проверять логику сценария.

Тестирование и отладка: В форме шаблона есть встроенные инструменты для быстрой проверки:
Кнопка "Тест": Автоматически создает и загружает в регистр тестовое дерево "Угадай животное", чтобы вы могли посмотреть, как работает система.
Кнопка "Проверить целостность": Проверяет, нет ли в вашем дереве "оборванных" веток или ссылок на удаленные вопросы.

Кнопка "Экспорт в файл": Позволяет выгрузить структуру вашего дерева в простой текстовый файл для документации или анализа.

3. Интеграция с "Назначением опросов". При создании документа "Назначение опросов" вы можете выбрать шаблон бинарного дерева. После того как вы укажете шаблон и список респондентов, при проведении документа "Назначение опросов" система автоматически создаст для каждого пользователя персональный, готовый к прохождению документ "Тест (бинарное дерево)". Важно, что в момент создания теста система копирует в него текущую структуру дерева из шаблона. Это означает, что даже если вы позже измените шаблон, уже назначенные тесты останутся неизменными, что гарантирует корректность прохождения.

В итоге, новая функциональность открывает широкие возможности для создания интерактивных сценариев. Она позволяет отойти от статичных списков вопросов и перейти к динамичным диалогам, которые ведут пользователя к результату самым коротким и логичным путем. Мы надеемся, что этот инструмент станет незаменимым помощником в вашей работе.

 

Информация о лицензии (MIT License)

Полный текст лицензии находится в файле LICENSE. Ниже приведено краткое изложение основных положений простым языком. Вам разрешается: Использовать бесплатно: Вы можете свободно и безвозмездно использовать эту разработку в любых своих проектах, включая личные, учебные и коммерческие. Изменять: Вы можете копировать, изменять, дорабатывать и адаптировать исходный код под свои нужды без каких-либо ограничений. Распространять: Вы можете включать данную разработку (или ее измененные версии) в состав своих конфигураций и распространять их дальше, в том числе на коммерческой основе. Вы обязаны: Включать текст лицензии: При любом распространении вашей конфигурации, содержащей эту разработку, вы должны включать в нее оригинальный текст лицензии MIT и это уведомление об авторских правах. Вам не запрещается: Держать исходный код ваших доработок закрытым. Лицензия MIT не "вирусная" и не требует, чтобы ваш конечный продукт тоже был открытым. Важные замечания: Без гарантий: Разработка предоставляется «как есть» ("as is"). Авторы не предоставляют никаких гарантий и не несут ответственности за любые возможные убытки, возникшие в результате ее использования. Зависимости: Данная разработка предназначена для использования в среде "1С:Предприятие" и требует наличия "Библиотеки стандартных подсистем" (БСП). Лицензии на платформу "1С" и БСП не являются частью этого проекта и регулируются правообладателем (фирмой "1С"). Уведомление об авторских правах (Copyright Notice) Это уведомление является неотъемлемой частью лицензии. Copyright (c) 2025, Сергей Космачев, Фёдор Космачев Просьба об указании авторства: Помимо формальных требований лицензии MIT, авторы будут благодарен, если при любом публичном использовании, демонстрации или упоминании данной разработки вы укажете активную ссылку на оригинальный репозиторий проекта: //infostart.ru/profile/318390/ Это поможет развитию проекта и позволит другим пользователям найти исходный код.

 

Авторы разработки:

Сергей Космачев, Фёдор Космачев

 

Обязательная ссылка для указания:

https: // infostart.ru/profile/318390/

Спасибо за использование данной разработки! Авторы будут благодарны за обратную связь и предложения по улучшению.

Реализовано на платформе 1С:Предприятие 8.3 (8.3.27.1559) Версия для разработчиков.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Математика и алгоритмы Программист 1C v8.2 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    11875    stopa85    12    

42

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    18766    user1959478    57    

39

Математика и алгоритмы Разное 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    11380    maksa2005    8    

27

Математика и алгоритмы Инструментарий разработчика Программист 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    18838    11    SpaceOfMyHead    20    

64

Математика и алгоритмы Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    12893    RustIG    9    

30

Механизмы платформы 1С Математика и алгоритмы Программист 1С v8.3 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    11988    gzharkoj    15    

27

Математика и алгоритмы Программист 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    11123    8    kalyaka    11    

45

Математика и алгоритмы Программист 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    14150    fishca    12    

39
Для отправки сообщения требуется регистрация/авторизация