• Как сделать сортировку матрицы?

    akhmelev
    @akhmelev
    программист
    Медленно, но без потерь памяти - перестановками. Т.е. если не очень важна скорость используйте сортировку хотя бы тем же пузырьком, но двухмерную. Перебираем все элементы матрицы двигаясь по побочным диагоналям 11 12 21 13 22 31.... Каждый элемент нужно сравнить с 8 элементами вокруг него (хотя, на самом деле хватит и трех, правее, ниже, правее-ниже) и найти наилучшего кандидата на обмен местами. Сравнение вести по сумме x+y или лучше по квадрату длины вектора (x^2+y^2). Повторять перебор матрицы пока есть обмены. Т.к. самый тяжёлый элемент упадёт в конец матрицы, можно каждый новый проход делать не единицу короче.

    Есть много способов ускорить это дело через дополнительные массивы и индексы. Простейший способ как отмечалось выше: развернуть в одномерный (по побочным диагоналям), отсортировать эффективным алгоритмом (коих море) по тому же критерию x^2+y^2, свернуть обратно в двухмерный.

    Все умозрительно. Надо проверять.
    Ответ написан
    Комментировать
  • Как получить содержательную часть страницы?

    akhmelev
    @akhmelev
    программист
    Очень актуально. Поделитесь, решение было найдено?
    Ответ написан
    Комментировать
  • Как остаться незамеченным в сети при подключении по wi-fi?

    akhmelev
    @akhmelev
    программист
    Выключить в свойствах соединения галки «Клиент для сетей MS» (клиент) и «Служба доступа к файлам и принтерам сетей MS» (сервер).
    Ответ написан
    5 комментариев
  • Как в произвольном тексте найти почтовые адреса?

    akhmelev
    @akhmelev
    программист
    По идее без базы городов и адресов задачу решить вообще довольно сложно.

    Например «Луганск Оборонная 39» мало отличается от обычного текста, если заранее неизвестно что речь о городе и улице.
    В то же время гугл находит о каком адресе речь: my.jetscreenshot.com/226/20120819-yhtt-39kb
    Вывод: если приложение ненагруженное можно просто покопать api гуглокарт, иначе только свою базу нужно.
    Ответ написан
    1 комментарий
  • Восстановление поврежденного изображения нейронной сетью?

    akhmelev
    @akhmelev
    программист
    Просто мысль.

    Если ИНС это принципиально важно, то вам возможно подойдет обычная ИНС, но малюсенькая и с узким горлом (малое число нейронов в скрытом слое).

    Жутко медленный алгоритм:
    1) обучаем сетку бегающим окном 3x3 (или около того) по полю 15x15 (как ассоциативную память, т.е. окно вход и выход).
    2) после обучения сеть будет аппроксимировать поверхность т.е. сгладит шум, для этого важен малый размер сети и ранний останов обучения.
    3) выход сети для всех положений окна запоминаем, усредняем результаты попиксельно.
    4) далее смещаем квадрат 15x15 и весь процесс повторяется. Смещение должно быть с перекрытием (т.е. меньше чем на 15 пикселей) иначе стыки вылезут.

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

    P.S. А вообще тут имхо уместна обычная нелинейная регрессия или что-то типа сплайнов, но для двух входных переменных.
    Ответ написан
  • Какой тип нейросетей оптимален для обработки двоичных данных?

    akhmelev
    @akhmelev
    программист
    Нейросети точно не айс для такой задачи. Посмотрите в сторону решающих деревьев.
    Ответ написан
  • Нейронные сети и back propagation

    akhmelev
    @akhmelev
    программист
    На пальцах так.

    Есть обучающая выборка — т.е. таблица с данными, допустим первые 10 столбцов это вход, оставшиеся 5 — это выход искомой нейросетевой модели. Берем случайно одну строку из таблицы. Назовем её отдельный экземпляр или образ данных. Подаем 10 элементов на вход, нейросеть при текущих значениях синапсов считает, что будет на выходе (5 значений).

    Начинается один шаг back propagation. Сравнивается полученный выход нейросети с эталонным в обучающей таблице. Если реальный выход одного из пяти выходных элементов нейросети имеет ошибку, то синаптические коэффициенты этого выходного нейрона нужно чуть-чуть изменить так, чтобы эта ошибка чуть-чуть уменьшилась. И так для всех пяти выходов. Для многослойных сетей процесс каскадно повторяется, пока движение коррекций синапсов от выхода сети не доберется до её входа. Т.е. мы сделали сеть на этом шаге чуть-чуть точнее для этой одной конкретной строки из обучающей таблицы.

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

    В вычислительном процессе есть две опасности — паралич сети (выход синаптических коэффициентов на очень большие значения) и переобучение (потеря способности обобщению, т.е. сеть может верно распознать лишь образы из таблицы, но не промежуточные).

    Это совсем на пальцах. Для полного понимания поста не хватит, надо матчасть учить: Круглов, Хайкин, Терехов, Галушкин в помощь. Особенно Хайкин.
    Ответ написан
    3 комментария
  • Вынос WiFi антенны на улицу

    akhmelev
    @akhmelev
    программист
    3-й вариант. Без проводов. Можно поставить не антену, а AP как repeater, (правдао ширина канала будет не маскимальной).
    Ответ написан
    2 комментария
  • Сетевые папки в Windows server 2003

    akhmelev
    @akhmelev
    программист
    В 2003 не получится объединить несколько списков файлов воедино, только отдельно символическими ссылками на каждый файл (FAR Alt+F6). NTFS обязательна.
    Ответ написан
    Комментировать