Pull to refresh
55
0
Николай @nicolausYes

User

Send message
У каждого языка свои преимущества. В спортивном программировании не стоит сильно привязываться к одному языку, нужно знать и «не родные» языки хотя бы на среднем уровне(написание циклов, методов и т.п.), иногда может очень пригодиться. Например, Java имеет встроенную поддержку длинной арифметики, в то время как на C/C++/C#(BigInteger появился только в 4 версии фреймворка) приходится писать ручками, на что уходит драгоценное время.
Хм, а мне как раз наоборот — ссылка :)
Несколько мыслей на эту тему. Мне очень нравится спортивное программирование. Я в этом не гуру, я не выигрывал топовые соревнования, но я всегда стараюсь участвовать в подобных мероприятиях, хоть опыт мой в этом не мал, но я все еще нервно клацаю F5 после отправки решения и с замираем сердца жду в следующий момент заветный ОК/Accepted.

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

Существует тенденция, что чем старше человек, тем меньше вероятность, что он заинтересуется СП. В статье уже сказано, что человек может уже реализовал себя, либо потерял всякое желание к обучению (либо пребывает в стадии 4 сей замечательной статьи habrahabr.ru/blogs/crazydev/39300/). Именно поэтому в средних ВУЗах СП приходит в упадок. На первых курсах зачастую некому привить желание к СП начинающим программистам, некому с ними заниматься, а на последних талантливые программисты уже работают и заинтересованы в карьерном росте и зарабатывании денег. (Речь здесь не идет о тех людях, которые участвовали в олимпиадах еще со школы, таких обычно пытаются переманить лучшие ВУЗы страны). В итоге, в университете, который ежегодно выпускает десятки программистов, нельзя собрать даже одну команду, чтобы куда-то отправить на соревнования. Студенты сетуют на то, что их этому не учили и с ними не занимались. Руководство университета спихивает все на то, что студенты слабые, немотивированные, ничем не интересуются. Университет здесь не прав, так как хочет получить какой-то результат, ничего при этом не дав. Как результат университет не имеет людей, которых могут с достоинством защищать честь университета, а большинство студентов, которых не заинтересовали СП во время учебы, так им и не заинтересуются.
А мотивировать совсем то просто. После школы у начинающих программистов все еще имеется юношеский максимализм, они пытаются выделиться из толпы, добиться в чем-то хорошего результата. Нужно только направить людей в нужное русло. Даже просто устраивать внутренние соревнования, а потом давать грамоты победителям, скажем, на день факультета или университета. Оплачиваемые командировки в разные города и освобождение от некоторых предметов тоже стимулирует людей заниматься СП. Но это долгая история, можно даже написать статью на эту тему:)
Расширю свой ответ. Плюсы этого ресурса:

1. Огромное количество задач(несколько тысяч), в том числе из финалов ACM ICPC
2. При просмотре списка задач видна удобная статистика — процент решивших задачу и процент успешних отправок. Выглядит так — clip2net.com/s/1ae7N
3. По каждой задаче подробнейшая статистика(тут надо смотреть картинку). Доля Accepted, Time Limit, Wrong Answer и т.п. от всех решений, доля каждого языка в отправках, топ-20 решений по скорости и место, на каком находится ваше быстрейшее решение, если вы эту задачу уже решили. Выглядит так — clip2net.com/s/1aeaa
4. Наличие форума и темы по каждой задаче, где всегда и подскажут алгоритм решения, и дадут верные выходные данные на предоставленные входные, и даже могут подсказать что не так в коде, если что-то не получается
5. Информативная страничка личной статистики. clip2net.com/s/1aeb4
6. Вроде еще где-то был генератор выходных данных почти для всех задач

Интересно. Дайте мне знать, пожалуйста, когда Ваша библиотека увидит свет.

В неочень далеком будущем планирую большой проект с широким использованием нейронных сетей и вопрос производительности стоит на одном из первых мест. Надо бы поискать что-то подходящее, присмотреться и потестировать. Еще есть вариант написать велосипед что-то абсолютно свое, либо распараллелить какую-то из существующих библиотек с открытым исходным кодом.
Посмотрите в сторону FANN — это библиотека, написанная на С, которая имеет интерфейсы на множество языков, в том числе C++, C#, Ruby, Java, Python, Perl, PHP, Lua. Возможно, это то, что Вам нужно.
Спасибо. Лично мне было интересно как она проявляет себя на практике, ведь в Интернете ничего по этому поводу нету — повсюду все те же два абзаца.

Ну смотря что Вы имеете ввиду под «реальными проектами» :) Если в проектах компании Google, Microsoft, то да, навряд ли они будут использовать. А если в своем проекте/стартапе, где ключевая роль отводится нейронным сетям, то почему бы и нет. Лично меня очень порадовала скорость работы. Возможно, в совокупности еще с какой-то нейронной сетью они будут давать хорошие результаты. В любом случае, удалось пролить немного света на эту область и тут все еще остается не паханное поле :) Нужно пробовать и экспериментировать.
Можно.
Сеть обучается с учителем. В качестве алгоритма обучения — метод обратного распространения ошибки.

Обучающая выборка — множество векторов, которые надо сжать. Она состоит из двух массивов векторов. Первый массив — входные вектора, второй — желаемые выходные вектора. Если нам надо просто сжать данные, то эти массивы идентичны (как в примере). (Почему я говорю «просто сжать»? А потому, что подобную архитектуру можно попробовать использовать как альтернативу двунаправленной ассоциативной памяти).

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

Может я и ошибаюсь, но такую информацию получил от авторитетного источника — человека, который занимался и видел это на практике. Хотя, он человек весьма пожилой и было это, возможно, давненько, но все же было. А может и до сих пор есть, однозначно отрицать это нельзя.
Верно говорите, уйдут века. Хотя, нужно будет попробовать и посмотреть на сходимость ошибки.
Я склоняюсь к мысли, что если и применять подобный алгоритм для сжатия без потерь, то стоит наперед знать какие данные мы будем сжимать и передавать. То есть, грубо говоря, нам нужно постоянно передавать 20 изображений. Обучаем сеть и наслаждаемся результатом. НО, если нужно будет передавать еще одно изображение, то сеть может выдать для него неверный результат. С этого следует, что при добавлении каждого нового вектора сеть стоит переобучать.

А вообще, если честно, то нейронные сети, которые применяют на практике часто обучают по несколько лет :)
Так и есть, эта же мысль выражена в первом абзаце статьи.

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

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

Information

Rating
Does not participate
Location
Житомир, Житомирская обл., Украина
Registered
Activity