程序员间常见的一个话题是『反正工作中又碰不到,我要这算法有何用?』,因而有标题所问。
本帖的讨论范围暂时不包括那些过于典型的场景,这里的“典型”是指:当我需要做一个功能,百度或 Google 之后,大家都在用这个算法,那我就使用这个算法吧。比如垃圾词过滤的 AC 自动机(包括其他改进版)、爬虫 URL 判重的 BloomFilter (包括其他改进版)。
我举两个我见过的例子:
word2vec
本身是做Word Embedding
的,进而可以用来判断同义(同位)词。一个有趣的应用场景是,训练用户的商品浏览记录,用户同一个 session 内连贯的浏览,相当于一个句子,每个商品相当于一个 word,进而发现相似的商品。 1
codermagefox 2017-09-06 12:15:57 +08:00
翻译一下就是:我曹踏马的还可以这么写?好踏马牛逼啊!
这就是为什么我一个狗前端还买了一本算法导论垫桌子....梦想着有一天能够有能力把它读下去.哭. |
2
takato 2017-09-06 12:18:19 +08:00
万物皆图...
|
3
Morriaty OP @codermagefox 事实上,前端也是可以业务场景算法话的啊,比如分类列表,分组可以调换位置,移动。分组里边的元素也可以移动到不同分组。还有删除,增加分组;删除,增加元素…这么多操作,想高效率进行,算法绝对少不了。
|
5
winglight2016 2017-09-06 21:11:21 +08:00
所谓场景大概指的是用户的使用场景吧?这种情况下,仅仅是应用级需求,跟抽象成算法基本没什么关系了,反过来说,需要使用算法或者优化算法的场景都是非常少见和特殊的,而且也是成熟的。至于你举的例子,都是深度学习相关吧,这一领域的确有大量算法实践,不过我也不熟
|
6
Morriaty OP @ma125125t # 4 电商品类树或者 QQ 好友表,我举的例子可能更偏向与数据结构了,不过我想强调的是前端也不是完全原理算法的。
@winglight2016 # 5 我依然觉得算法用的少,一是因为很多情况下 for 循环能解决的问题,我们懒得去想的更深入,也就是继续抽象;二是现在服务器和代码的性能做足够好,我们都感受不到时间、空间复杂度的问题。 然后我举得例子都算不上深度学习,第一个例子里你甚至不需要理解原算法基础,只要能够意识到同义词和相似商品的对等关系就行,这个应用场景再具体一点,可以是假货识别,比如找到和 Nike 相似的商品是 Noke ;第二个 LDA 是传统一点的统计学习。 当然,本帖想强调是第一个例子里的对等意识,和第二个例子里的从零开始的抽象意识。 |