Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 13.03.2016
Сообщений: 6

Разработка алгоритма для распределенной системы

13.03.2016, 18:46. Показов 733. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый день!
Для распределенной АСУ необходимо разработать систему единой нумерации.

Принцип работы такой: операторы выделяют на карте некоторые объекты (анализ изображений). Система автоматически нумеруют их. Данные о выделенных объектах распределяются между всеми участниками сети. Объекты могут отождествиться с объектами, выделенными другими операторами. Для всего этого нужно как можно скорее сформировать единый номер и оповестить о нем всех участников.

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

Это что-то из раздела непротиворечивость и репликация распределенных систем Танненбаума, но у него нет прямого решения подобных проблем.

Существуют ли готовые решения, если нет, то куда копать? Может идеи какие?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2016, 18:46
Ответы с готовыми решениями:

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

Разработка алгоритма системы контроля знаний
Как заполнить тест случайными заданиями по определенным темам? Единственный вариант над которым я задумался - это вывести список всех...

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

5
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
14.03.2016, 15:53
Полностью готовые решения под такую задачу вряд ли есть. Да и исходники я такие не видел.
Задача полностью с нуля делается?
Думаю, сначала разбить на отдельные блоки.
(1) Откуда брать карту, как получать информацию о появлении и исчезновении объектов
(2) Как реализовать коммуникацию операторов.
Если нет единого сервера, то возможно нужно реализовать мини-сервера на базе отдельных операторов, которые видят большое количество участников. Делается через интернет (где у операторов могут быть проблемы с соединением с другими операторами) или в локальной сети или VPN (все видят всех) ?
0
0 / 0 / 1
Регистрация: 13.03.2016
Сообщений: 6
14.03.2016, 22:37  [ТС]
1. Эта задача решена, клиентское ПО оформляет объекты и нумерует их в локальной нумерации. Карты загружаются до работы, сами клиенты расходятся по территории с небольшими планшетами, которые и есть узлы. К планшетам привязано некое распознающее оборудование, которое и является источником информации.
2. На конкретный транспорт мы стараемся не завязываться, в основном связь через сеть радиомодемов, провод появляется в качестве исключений. Подошел ближе - есть связь, отошел - пропала. Эта основная проблема, которая создает децентрализацию.
3. О всех найденных объектах узлы оповещают соседей. Автоматике задача нумерации не нужна, объекты прекрасно отождествляются по координатам, размеру. Эта задача больше полезна операторам, которые смогут по рации обсуждать объекты, называя их номер. Понятно, что можно потом вернуться, слить все в одну базу (что и делается), где будут присвоены номера. Но мне номера нужны во время работы.
4. Нахождение объектов в некой локальной нумерации допустимо, но количество и время таких ситуаций должно быть минимизировано. При этом каждый узел должен четко знать находится данный объект в общей или в локальной нумерации.


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


Надеюсь для понимания достаточно. Посторонние вещи старался опустить, чтобы не засорять внимание.

Меня интересует исключительно разработка алгоритма нумерации. Причем нумерации человеческой (1,2,3), 32-битные хеш-суммы от координат в качестве номеров подойдут не особо (да и координаты у каждого свои по точности).

Появилась идея, что задача относится к классу задач именования, своего рода распределенный DHCP, может стоит в эту сторону копать?
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
15.03.2016, 13:38
Про мини-серверы - возможно нужно придумать алгоритм поиска маршрутов распространения информации между узлами, накопление данных при обрыве и пересылка накопленных данных при возобновлении соединения с другими узлами. Мини-сервер не должен быть уникальным, каждый узел пусть может быть мини-сервером когда это нужно.

По нумерации - возможно, придумать двойную нумерацию оператор + объект, поскольку изначально у каждого оператора будет своя нумерация, а по двойной можно однозначно идентифицировать. А вот что делать когда сопоставляем одинаковые объекты от разных операторов... Поскольку центральный узел отсутствует как класс, то возможно лучше пусть ПО каждого оператора составляет свою таблицу соответствия между локальной нумерацией и нумерацией других узлов.

Без введения некоторой хэширующей (или "хэширующей") функции, я думаю, не представляется возможным составить глобальную нумерацию поскольку нет центрального узла, а конфигурация сети меняется в реальном времени. Если операторы общаются только через ПО - то пусть ПО транслирует нумерацию других узлов в локальную нумерацию конкретного узла, и наоборот.
Если операторы могут общаться не только через интерфейс ПО (через телефон, например), то без некоей классифицирующей функции не обойтись. У вас есть признаки, по которым определяется одинаковы ли два объекта у разных операторов, возможно эти признаки следуют перевести в удобную для вербализации форму?
0
0 / 0 / 1
Регистрация: 13.03.2016
Сообщений: 6
16.03.2016, 19:42  [ТС]
Цитата Сообщение от wingblack Посмотреть сообщение
ПО каждого оператора составляет свою таблицу соответствия между локальной нумерацией и нумерацией других узлов
Да, так сейчас и сделано, это нормально для автоматики, но очень не удобно для оператора.

Цитата Сообщение от wingblack Посмотреть сообщение
У вас есть признаки, по которым определяется одинаковы ли два объекта у разных операторов, возможно эти признаки следуют перевести в удобную для вербализации форму?
В основном это размер и координаты. Я думал как-то делить объекты на группы, например, по азимуту от некой условной точки или заранее разбивать карту на регионы. Но все это не дает однозначного решения - в некоторых областях может оказаться куча объектов, а в других - ни одного.

Мне кажется, что ключ лежит в неком распределенном алгоритме голосования, когда большинство узлов договариваются о номере и он присваивается другим. Важно не то, чтобы гарантировано все знали общий номер, а только а) общий номер уникален и б)точно известно это общий номер или локальный.
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
17.03.2016, 10:07
Цитата Сообщение от Distincy Посмотреть сообщение
Мне кажется, что ключ лежит в неком распределенном алгоритме голосования, когда большинство узлов договариваются о номере и он присваивается другим. Важно не то, чтобы гарантировано все знали общий номер, а только а) общий номер уникален и б)точно известно это общий номер или локальный.
Тут еще проблема в том, что возможна довольно большая задержка пока все узлы договорятся о общем номере, особенно если сеть распадется на отдельные группы.
Программе то все равно, программам достаточно хеша, а вот для операторов общий номер может уточняться медленно. Я вижу решение только в переводе характеристик в удобную для разговора форму. Например, в пределах одного "выезда" работа будет проводится на определенном участке - следовательно можно перевести глобальные "длинные" координаты в координаты локальной сетки, причем можно не только в системе счисления по основанию 10. Аналогично поступить с высотой объекта. И получим вполне удобное для вербализации глобальное обозначение вида 10-20-50. Если получим одинаковые вербальные обозначения для разных объектов - добавить еще одно число, которое использует уточнение имеющихся признаков, или уже тут вводить нумерацию, но тогда проблема останется.
Конечно, лучше бы чтобы размер вербальной формы сразу соответствовал точности сравнения объектов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2016, 10:07
Помогаю со студенческими работами здесь

Модель распределенной системы
Привет всем, на связи нуб. :wall: Помогите сделать лабу. Требуется создать МОДЕЛЬ (именно модель) распределенной системы...

Разработка алгоритма для подтверждения фактов
Я разрабатываю алгоритм, который будет подтверждать факты с помощью интернета. Вот например вопрос "Москва столица России?" ответ...

Разработка алгоритма для анализа рентгеновских излучений
Ребята помогите пожалуйста собрать алгоритм анализа, вообще не получается. Или анализ рентгеновских изображений в Matlab. В общем нужно...

Разработка алгоритма и кода для трех строковых функций
Помогите пожалуйста, буду очень благодарен за любую помощь. Зарание спасибо. Требуется разработать алгоритм и код для трех строковых...

Разработка аналитической и программной модели алгоритма для распознающей машины Тьюринга.
Всем привет!Помогите пожалуйста разобраться с машиной Тьюринга!Срочно,кто сможет,помогите,буду очень благодарна! Разработка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru