LINUX.ORG.RU

набор алгоритмов на джабе

 


3

4

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

вот захотелось мне заюзать боер-мура в строках, его что, из википедии копипастить?

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

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

ну и от нежелания самостоятельно считать количество операторов присваивания, размеров заголовков объектов,читать джавовский ассемблер, жопой чувствовать что настоящий код а что встроено в jvm итп. Так же можно с катушек мигом съехать, да? Пусть это посчитает кто-нибудь за меня, а я нахаляву пожну плоды чужого труда xD

ps, да, это тред о так называемом байтоёбстве для JVM. Это не ругательство, это термин xD

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 1)

Скорее нет, чем да.

Классические алгоритмы в принципе мало где используются, чаще в деле нужны эвристики и костылестроение.

Generic-алгоритмы в яве плохуют, потому что нельзя их эффективно реализовать для int-ов и double-ов, всё из-за бяки-боксинга. Или же придется отдельно создавать GraphSearcherInt, GraphSearcherDouble, в которых плодить копипаст кода.

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

В общем придется копипастить википедию.

anonymous
()

байтоёбстве

Невозможно в java by definition.

anonymous
()
Ответ на: комментарий от anonymous

Академические игрушки рождают ад и Израиль в лице хаскелля

Java-макака порвалась, несите следующую.

anonymous
()
Ответ на: комментарий от anonymous

Можно и так сказать. Но от академии до индустрии и вправду громадный путь.

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

GC? 60-е против 90-х.

OOP? 70-е против 00-х.

CSP? 80-е против 10-х.

Только правильнее сказать, что технодемке нужно 30 лет, чтобы превратиться в качественный инструмент. Поэтому с академиками лучше не связываться.

anonymous
()

«Алгоритмы» нужны только чтобы сношать джуниоров на собеседованиях. В реальной жизни алгоритмы не применяются.

anonymous
()
Ответ на: комментарий от anonymous

В реальной жизни алгоритмы не применяются.

:3

Debasher ★★★★★
()
Ответ на: комментарий от Evil_And

Ещё хорошая книга - Шаблоны программирования на Java.

Можно ещё изучить исходники того же Спринга, если времени полно.

tlx ★★★★★
()

По самой JVM - спецификация и исходный код

По оптимизации производительности

http://www.it-ebooks.info/book/551/

Сам алгоритмы

http://it-ebooks.info/book/4478/

http://rutracker.org/forum/viewtopic.php?t=4446667

http://www.ozon.ru/context/detail/id/6722233/

(калька с http://www.proklondike.com/books/cpp/lafore_oop_v_cpp.html)

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 3)

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

Просто «алгоритмов» без привязки к области? Нет, да и сомневаюсь, что это реально нужно.

Про Бойера-Мура - кривая постановка вопроса. Тебе же нужно подстроку найти, да, а не какой-то определённый алгоритм? Ищи как найти подстроку на Java. А там глядишь под капотом уже будет всё заоптимизировано как надо. Как и с твоим поиском подстроки:

http://stackoverflow.com/questions/20005690/stringutils-contains-of-apache-an...

migesok
()

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

dycore
()
Ответ на: комментарий от dycore

С этого места поподробнее.

Гугл-либы — гуава и джус — это коллекции, DI и небольшие улучшайзеры.

Apache — валом всего, если обобщить: утилиты-улучшайзеры + веб (от сервер-мелочей до поисковиков).

А вот библиотеку с графами и ИИ хотелось бы заслушать.

anonymous
()
Ответ на: комментарий от anonymous

Apache — валом всего, если обобщить
А вот библиотеку с графами и ИИ хотелось бы заслушать.

Да сотни их. Я вот давеча пользовался Apache Mahout:

The Apache Mahout™ project's goal is to build a scalable machine learning library.

migesok
()
Ответ на: комментарий от TheKnight

Насколько помню, в этой либе только совсем простые алгоритмы, вроде поиска в ширину и глубину. Есть ли тот же A* — непонятно.

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

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

Т.е. для анализа данных (кто с кем связан, какие кластеры у нас есть) оно подходит очень даже неплохо (не зря интегрировано с графическим JGraph). А вот если графы используются внутри приложения, и сами по себе юзеру не интересны, то случается конфуз.

anonymous
()
Ответ на: комментарий от migesok

«Концепция поменялась».

Я под ИИ подразумевал скорее околоигровые вещи. Поиск пути, распознавание изображений и речи, алгоритмы для поведения агентов. Причем не на сервере, а прямо у пользователя. Хоть на андроиде, хоть на десктопе, хоть в апплете (гадкая технология, кстати).

А сервер-сайд (текстовый поиск, BigData в целом и ML в частности) у явы просто уникальный по крутости, с этим согласен.

anonymous
()
Ответ на: комментарий от anonymous

не джус, а гуава для коллекций. я говорю нет волшебной библиотеки, графы отдельно от ИИ. Там море всего, вот например, конкретно алгоритмы. Для графов я юзал JUNG, т.к. у меня были не большие данные. Если данных много, можно использовать графовую БД, типа neo4j. Там все вполне прилично реализовано и легко масштабируется.

dycore
()
Ответ на: комментарий от dycore

Про commons-math не знал, спасибо. Выглядит солидно, надо присмотреться.

anonymous
()

по байтоебству должна якобы выручать http://en.wikipedia.org/wiki/Javolution
а «все алгоритмы в мире» вряд ли кто-то бесплатно выложит в бесплатное пользование. ну, кроме Apache. вы же не выкладываете то что накодили. вот и другие такие же хитрожопые

Karapuz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.