1
0
Fork 0

INIT (I swear I will never re-init this repo again)

This commit is contained in:
Chlorine 2025-05-10 14:02:07 +08:00
commit 3db85006cc
Signed by: chlorine
GPG key ID: 5ADFCC948BAA473A
105 changed files with 16927 additions and 0 deletions

View file

@ -0,0 +1,109 @@
---
slug: farewell-omnivore
summary: 再见了Omnivore
tags:
- Omnivore
- 开源
title: FarewellOmnivore
date: 2024-10-30
description: 本文讲述了作者对 Omnivore一款稍后读应用项目终止的感受和思考。文章首先介绍了作者与 Omnivore 的渊源,表达了对其功能和理念的赞赏。接着,作者详细描述了得知 Omnivore 团队加入 ElevenLabs、Omnivore 即将停止维护和服务关闭的反应时的悲哀,虽然 Omnivore 的代码依然开源,但服务器关闭和缺乏完善的自部署文档,意味着 Omnivore 实际上已走到生命尽头。最后,作者表示自己已经彻底离开 Omnivore探讨了开源项目的风险并展望了可能的替代工具表达了对开源社区的思考。
categories: ["图灵机"]
featuredImage:
draft: false
---
各位老友们好,我是 Chlorine。本文为紧急加更。
园子一向只有 Hello 系列,从未有过 Farewell 系列,也不会有这个系列。因为小氯从不喜欢告别,虽然我们[总要启程]({{< relref "Ephemeralis-Weekly1总要启程.md" >}}),但如果不是迫不得已,谁会愿意分开呢。
> 人生不相见,动如参与商。
>
> 今夕复何夕,共此灯烛光。
> [!TIP]
> 小氯尊重 Omnivore Team 的一切决定,也感谢他们在维护这样一个优秀产品方面的贡献。愿他们的新事业一切顺利。
## 前言
虽然这样显得极其啰唆且有水字数的嫌疑,但是小氯还是想说说自己和 Omnivore 的故事。不煽情,只是讲故事。
Omnivore 的本意是「杂食者」对于一个稍后读软件而言这是个很好的名字。Omnivore 的 slogan 是:
> Read-it-later for serious readers.
我最初是从公众号「维客笔记」了解到这一应用的。当时小氯酱刚刚接触 Obsidian 和 PKM 不久,酷爱折腾各种~~花里胡哨的~~工作流,而 Omnivore 免费、开源、跨平台、大陆可用、支持浏览器插件、支持和 Obsidian 联动的特性无疑是一连串的王炸。小氯火速注册了 Omnivore并开始将其作为主力的 Read-It-Later 工具。虽说这一年小氯本身也没存几篇文章,也并没有使用过几次 Omnivore Syncing to Obsidian 的功能,在实用层面对 Omnivore 没什么依赖,但是潜意识中,小氯早就把 Omnivore 当成了自己「理想工作流」的一部分,甚至是一个理想的信息聚合系统的「原型机」。
小氯把自己最喜欢的几篇文章存到了 Omnivore 中,闲来无事就读一遍,也曾经在数个场合强力推荐过这个工具,甚至在[上周的周报]({{< relref "Ephemeralis-Weekly11案几之上.md" >}})中也是如此。虽然说 Omnivore 存在一些令人有点不安的问题,例如一些 stale 乃至 rotten 的 issue、PR莫名其妙的 AI 功能,以及迟迟没有完成且官方并不给出直接回应的自部署文档等,但是小氯都没太当回事,只觉得是开发团队有更重要的事情要做。
## 晴天霹雳
这个标题很惊悚,或许夸张了点。
今天早上小氯翻收件箱的时候,偶然走到了 126 的垃圾邮件列表,发现了一封被 126 归于垃圾邮件的邮件,看样子来自于 Omnivore标题似乎是什么 Omnivore is joining XXX。当时小氯有点奇怪因为 Omnivore 一般是不会发营销邮件的。小氯甚至以为这是不是 Omnivore 加入什么联盟了,于是就没怎么管。
下午摸鱼的时候小氯又想起了这封邮件,于是去翻了翻。邮件是纯英文的,但是小氯仗着自己阅读能力尚可,直接不开翻译硬读。
然而小氯读完之后,对自己的英语能力产生了深深的怀疑,怀疑自己是不是理解错误了。
为了保险,小氯把邮件喂给了 AI得到了一份翻译与小氯的理解别无二致。
当时小氯的反应大概是和 GitHub Issue 上的第一条的标题一样:
> Seriously?
然后小氯去了 Omnivore 的官方博客,看到了他们[刚发布不久的文章](https://blog.omnivore.app/p/omnivore-is-joining-elevenlabs),最终确认这是真的。
> 小氯小氯,你在这内心独白了半天,到底发生什么了?
简单来说,就是:
- Omnivore 的全体开发成员已经加入 ElevenLabs一家 AI 初创公司Omnivore 的开发和维护即将停止。
- Omnivore 的官方服务器 `omnivore.app`(可能也是唯一的稳定服务器,因为 Omnivore 的自托管极其繁琐且没有完整的文档)将于 2024 年 11 月 15 日关停。
或者再说得直白(尽管不算很准确)点:
> Omnivore Team 把自己的产品卖了。
issue 里面,大家的反应不一。有人嘲讽,有人指责,更多的是遗憾和祝福,抑或是非常实用地开始讨论和推荐替代品。
小氯是什么感觉?小氯算不上气愤,虽然说开发者这样似乎有些对社区不负责,同时这样的处理方式也并不是最好的。如果一定要说的话,小氯有点悲哀,
不是大哭大笑的悲哀,而是沉默的、无力的悲哀。如同看着陪伴了自己许久的猫咪在眼前被人生生扼死,或者是看着自己费尽心血建起的家在大火中发出噼啪的哀鸣。
**一个三年之久、一万两千多个 star 的开源项目,说没就没了。** 虽然源代码还在,既没有 Public Archive也没有删库或许日后也会有热心的社区用户接手这个项目继续维护、提供完善的自部署文档甚至慷慨解囊部署一个替代 `omnivore.app` 的主服务器,但是,**Omnivore 已经走到了生命的尽头**,这一点,毫无疑问。
上次亲眼看见这样的事情,还是 Trilium 的维护模式。但是 Trilium 的开发者只是表示,自己不再有精力对 Trilium 进行积极的开发了,希望逐渐将项目让渡给一位新的主理人。而且 TriliumNext 也迅速补上了这个空缺,所以 Trilium 的维护模式虽然也在社区造成了不小的动荡,但是总体而言,有惊无险。
**但是 Omnivore 不一样**。它的开发者成为了新锐 AI 公司的雇员,它的主服务器被彻底地关闭,虽然我们可以导出数据,但是账户删除的失败甚至开始让人怀疑它是不是在出售用户的数据(尽管没有任何事实性证据,且从情感上小氯完全不能相信这一点)。而自部署的缺位,已经将绝大部分的用户隔离于继续使用稳定版本之外。
**Omnivore has gone. It will never come back.**
## 后记
谁也不知道 Omnivore 接下来会怎么样,或许只是不再更新,或许是 Public Archive或许直接删库。但是小氯觉得第一种可能性更大些。即使是因为开源开发者的那点傲骨Omnivore Team 也不会在邮件中向用户撒谎的(邮件中承诺 Omnivore 依然会保持开源)。为了以防万一,小氯紧急 Fork 了一份 Omnivore 的库。或许将来的某个时候,小氯会着手继续维护这个项目——尽管这几乎不可能。自己的技术能力几斤几两,小氯酱心里有数。
目前小氯已经请求了一次数据导出,并且删除了 Omnivore 账户至今没有成功Obsidian Omnivore 插件和手机端的 App 也已经被移除。除非有人能够接受 Omnivore 的开发并且给出一个完善的自托管方式(或者是提供一个免费的托管服务,尽管小氯喜欢前者),否则,小氯和 Omnivore 的缘分就到这里了。
或许小氯应该庆幸Omnivore 在小氯的工作流中还不是一个完全不可或缺的角色,实际上小氯将 Omnivore 整合到 Obsidian 的行为也并不常用。这可能也是在[之前那篇文章]({{< relref "Obsidian与开源.md" >}})中提到的那个巨大的线程中,一位网友的一个观点:
> 对于无法用最确切的手段保证持续开发的开源项目要保持最低限度的信任,因为你不知道它们什么时候就会停止开发,而你大部分时候都无能为力。
那么小氯日后会用什么呢?或许是 Shiori或许是 Wallabag或许是 Hoarder或许是 Linkwarden或许是 Readeck或许是 Obsidian Web Clipper或许是别的什么优秀的开源项目。然而这已经不是小氯当前要考虑的问题了。
我们当然可以就着各个话题写更多再写写对开源的思考——但是小氯已经有点累了。而且现在小氯也没办法把自己纷乱的思绪组织成完整的文章。所以Be easy on me, okay?
---
在口语课之后回来立即赶完了这篇文章,甚至在课上的 free share 中,小氯也在讲这件事。
说实话,小氯上面写的东西或许有点矫情的意思。如各位老友所见,小氯是一只情感有些迟钝的~~元素娘~~原子,因此实际的感觉可能远没有文章中暗示的那么强烈。
就这样吧,衷心希望这个标头不要有第二篇。
> 十觞亦不醉,感子故意长。
>
> 明日隔山岳,世事两茫茫。
**Farewell to Omnivore。愿世间一直有你愿世间不再有你。**

View file

@ -0,0 +1,173 @@
---
title: 收集一些最近发现的网站
summary: 小氯,你好闲啊
description: 本文分享了作者Chlorine发现的一系列有趣网站包括时间线生成器MyLens、在线百科全书Encyclopedia Britannica、中国古代妖怪资料库纪妖、佛罗里达奇闻异事集锦Florida Man、博客封面制作工具CoverPaint、代码图片生成器 Carbon、截图美化工具 Pica、Google的开源图片压缩工具Squoosh、森林声音白噪声网站tree.fm、展示全球风景的WindowSwap、加密消息生成器Saltify、临时手机号提供者AnonymSMS、临时邮箱服务10 Minute Mail、模拟黑客打字效果的Hacker Typer以及随机跳转至有趣网站的The Useless Web。作者还提到通过搜索和随机浏览互联网可以发现更多有趣的网站。
date: 2024-01-28
categories: ["逍遥游"]
tags:
- 安利
slug: some-websites
---
嗨,大家好,我是 Chlorine。
最近发现了不少有意思的网站,本来打算在周报里提一下就可以了,奈何有点太多了,因此决定单独写一篇。
> **宇宙安全声明**
>
> 我所指的“有意思”标准比较个人化,同时对于常用的实用网站和一些适合摸鱼的网站基本没有收录,大家也不必较真什么叫有意思,你杠你对。
## MyLens
地址: https://mylens.ai/
在逛博主[青山](https://yinji.org)的博客时发现的,作用是根据提示词生成相关的时间线,提示词中英文均可。以下是我测试的几个结果:
![|681](https://img.viento.cc/IMG-20240128120000-1.webp)
![|676](https://img.viento.cc/IMG-20240128120000-2.webp)
![|681](https://img.viento.cc/IMG-20240128120000-3.webp)
生成后可以下载一个 zip里面有这种长图和一组用来分享的切图蛮好玩的。
## Encyclopedia Britannica
地址: https://www.britannica.com/
我翻译一下,这个网站的中文名叫:《大英百科全书》.
没错,就是那一部“一部足以代表现代文明精华的世界级经典,辉煌时代的智慧结晶,一所没有围墙的大学,仅次于上帝的权威”。
现在都在互联网上了,尽情享用吧。
## 纪妖
地址: https://www.cbaigui.com/
收集中国古代的妖怪们,不错的小说素材发掘地。
## Florida Man
地址: https://floridaman.com/
这个网站我发现得比较早, 但是我还是忍不住写了下来.
佛州地方,物华天宝,人杰地灵。同时感谢佛州官方公开的案件记录,让我们能更直接地欣赏到佛州英雄好汉对于地球 online 中人类系统 bug 的绝妙利用。
![|441](https://img.viento.cc/IMG-20240128120000-4.webp)
比抽象搞笑视频更搞笑,还能顺便练英语,谁不喜欢呢。
我随便翻译两个不是很恶心的吧,翻译水平有限,请见谅:
[佛罗里达一曾盗窃沃尔玛的女子打算在沃尔玛求职](https://floridaman.com/florida-woman-stole-walmart-plans-apply-job-walmart/)
[一头上有佛州纹身的男子打电话让 911送他回家](https://floridaman.com/state-tattooed-on-head-calls-911-for-a-ride-home/)
[佛罗里达一男子将“只踩油门不刹车”纹在脖子上炫耀驾驶技术,结果在逃脱警察追捕时撞车](https://floridaman.com/florida-man-with-all-gas-no-brakes-neck-tattoo-crashes-while-fleeing-police-video/)
[佛罗里达一男子被复活节小兔暴打](https://floridaman.com/florida-man-gets-beat-up-by-the-easter-bunny/)
[佛罗里达一男子试图射杀小狗,结果被小狗反杀](https://floridaman.com/florida-man-tries-shoot-puppy-puppy-shoots-instead/)
## CoverPaint
地址: https://coverpaint.xiaole.site/zh
一个 Github 的开源项目,用于制作格式统一的博客封面。
放下我这周周报的封面:
![]() ![](https://img.viento.cc/IMG-20240128120000-5.webp)
图片依然来自优秀的 [Unsplash](https://unsplash.com/).
项目的仓库在 https://github.com/youngle316/cover-paint , 看样子能自部署,可惜现在我只会用 Vercel, 看不懂思密达。
## Carbon
地址: https://carbon.now.sh/
字面意思是碳,实际效果相当于碳的某同素异形体。
![|558](https://img.viento.cc/IMG-20240128120000-6.webp)
这个网站的作用是把代码变成易于分享的好看图片,我贴个自己做的图吧。
![毁灭吧.webp(doge)|392](https://img.viento.cc/IMG-20240128120000-7.webp)
各种样式都蛮丰富的,喜欢贴代码图的小伙伴应该会喜欢。
## Pica
地址: https://pika.style/
帮你美化你的截图,设计师们可能会喜欢吧。
## Squoosh
地址: https://squoosh.app/
来自 Google 的开源图片压缩网站,压缩速度和质量好得夸张。唯一的缺点是不支持批量压缩。
自从发现了这个网站后,我就丢掉了访问极度不稳定的 tinypng. 这个网站在我现在写博客的过程中功不可没,我的每一张图片都会丢进去极限压缩并导出 `.webp`,来把大小缩减到最低。
源代码在 https://github.com/GoogleChromeLabs/squoosh , 技术力高的朋友可以自己部署,我就只用 Edge 自带的功能,把网页下载到本地变成应用了。
值得一提的是,这个网站在大陆也可以访问。
## tree.fm
地址: https://www.tree.fm/
聆听森林的声音。当一个白噪声电台挺不错的。
## WindowSwap
地址: https://www.window-swap.com/
想看看,此时世界上的另一个人,窗外是怎样的风景吗?
## Saltify
地址: https://www.saltify.io/
字面意思是盐化,但是和食盐没什么关系。
这个网站可以生成带有密码和生命周期的消息,感觉适合用来说悄悄话。
## AnonymSMS
地址: https://anonymsms.com/
一个匿名短信验证网站,可以给你提供一个临时的手机号接验证码。原本好像只有米国和带嘤的手机号,现在多了几个地区。
不知道能不能用这个网站申请 ChatGPT API 一类的服务?🤣
## 10 Minute Mail
地址: https://10minutemail.com/
字面意思,创建一个临时邮箱,和上面的 AnonymSMS 功能相似。
## Hacker Typer
地址: https://hackertyper.com/
黑客模拟器,一个在键盘上随便乱打就能假装你是黑客的网站。大小所限,我就不放 GIF 了。
![|502](https://img.viento.cc/IMG-20240128120000-8.webp)
不过,这个网站也只能拿来装装,真想有黑客的技术力,还是得好好学计算机~
## The Useless Web
地址: https://theuselessweb.com/
一个网站任意门,可以带你随机穿越到一个没什么用的网站。
---
先说这么多吧,今天或者明天会更周报。
关于发现这些网站的方式,可以在 Google 里直接键入 interesting websites里面就会有很多推荐在发现国外网站方面尤其好用。当然也可以在互联网中随机游走会随缘碰到一些网站。

View file

@ -0,0 +1,40 @@
---
title: 新域名
date: 2024-04-16T07:41:00
slug: new-domain
categories: ["图灵机"]
summary: 这是什么,域名?买一下
password:
tags:
- 域名
- 折腾
description: 本文讲述了作者购买新域名的经历。作者突发奇想,想找一个与 "hello world" 相关的域名结果在浏览过程中发现了一个让他心动的域名——pursuing.me。这个域名让作者联想到追逐梦想的意义于是决定购买。在比较了不同平台的价格后作者发现 Spaceship 的价格更便宜,于是通过开通境外支付成功购买了这个域名。尽管还没决定如何使用这个域名,作者先将其挂到了 CloudFlare 上。
---
各位老友们好,我是 Chlorine。
昨天晚上突发奇想(其实是看宣传片看激动了),想去找找前缀是 `hello world` 的域名。当然了,这么好的前缀肯定注册的人挺多,比如不出我所料有 `helloworld.org`,收录了各种语言的 hello-world。
然后我开始在 Dynadot 上闲逛,找一些和代码相关的域名,然后就越跑越远……
直到我看到了这个域名:`pursuing.me`
当时我就心动了。Pursueme。
> 我不停奔跑,是为了追逐当年那个被寄予厚望的我。
然后我当即决定抢一下。
在我下单之前,我决定去 Spaceship 看一看,因为我记得这个域名在 Spaceship 是好几万美元,截个图当个乐子。
然后我就发现 Spaceship 的价格实际上是 4 美元,比 Dynadot 便宜一半,续费也更便宜。
好好好 🤣
不过 Spaceship 只支持美元支付。我有 PayPal但是绑的是普通卡还没开境外交易于是我先睡了。
今天一早我就起来,下了个某行的手机银行,然后开了境外支付。然后就成功力~
最终花销是 34r汇率略高但也比 Dynadot 的 60r 便宜了。
我还没太想好用它干什么,先挂到 CloudFlare 上吧。

View file

@ -0,0 +1,27 @@
---
title: 新域名2
date: 2024-04-21T19:31:00
slug: new-domain-2
categories: ["图灵机"]
summary: 梅 开 二 度
tags:
- 域名
- 折腾
description: 这篇文章讲述了作者为部署多个服务而购买新域名的过程。由于不想在主域名上堆积二级域名,也不想用新买的 `pursuing.me`,作者决定购买一个便宜的 `.top` 域名。最终,作者在华为云上购买了 `chlorinechan.top`,完成实名认证后将其挂到了 CloudFlare 上。
---
起因是,在我有了虚拟机并部署 Memos 之后,我想部署几个其他的服务,比如 [Music Tag Web](https://github.com/xhongc/music-tag-web)。
然后我就想到,在博客主域名堆一大堆二级域名疑似有点不太好,而新买的 [https://pursuing.me](https://pursuing.me) 我还比较喜欢,排除掉。
那么似乎就只有一个选择了,那就是再买一个专门堆服务的域名。
既然是专门堆服务的,也不用考虑什么 SEO那就哪个便宜买哪个。放眼天下最便宜的 TLD 应该就是 `.top` 了。
在哪煮米看了下,最便宜的依旧是我 Spaceship。不过 Spaceship 似乎出了点问题,不能搜索 `.top` 域名。所以我选择了稍贵一点的华为云,两个月之后把域名转到 Spaceship 就可以(没错,不能搜索但是能转入,怪死了),甚至由于华为云也很便宜,直接在华为云上续费也中。
华为云需要提交实名认证表单,于是我提交了。审核速度很快,也就是一个小时左右。然后就下单了。
<https://chlorinechan.top>chlorinechan小氯酱。一共九块钱比蜜雪冰城的奶茶还便宜doge
继续挂到 CloudFlare 上。

View file

@ -0,0 +1,36 @@
---
title: 新域名3
date: 2024-05-30T20:56:00
summary: 梅 开 三 度
categories: ["图灵机"]
tags:
- 折腾
- 域名
draft: false
slug: new-domain-3
description: 本文讲述了作者为了使用国内免费 CDN 给博客加速,决定进行域名备案,但主域名 yoghurtlee.com 备案期间需暂时关停。为避免影响,作者购买了新域名 efimero.cn。作者很喜欢其寓意并考虑用其进行备案。最后作者提出了备案后如何处理两个域名的疑问并表示对 Hugo 主题 Blowfish 的兴趣。
---
没错,我又买了个域名(
起因其实是我希望用一下国内的免费 CDN 给博客加个速,而国内的免费 CDN 绝大部分都要备案。
那就备案呗,反正我领了套路云高校计划的优惠券,可以实现零费备案。
但是我的主域名现在还在对外提供服务,转到套路云之后就得暂时关停了。一停就是好几周,还没办法进行跳转。很难受(当然也可以找一个临时域名,不过这样 Twikoo 就得暂时关上)。
所以我决定再买一个域名(前后有什么联系吗?没有)。
域名在套路云买的,中国专属的域名 `.cn`[https://efimero.cn](https://efimero.cn)。
Efímero 是西班牙语,就是 ephemeralis 的意思。倒是也可以当得起博客主域名。
我个人非常喜欢这个词。生命如蜉蝣般转瞬即逝,只是历史长河中微不足道的一缕微光。我们所能做的,唯有追寻自我,照亮他人。
> Como el viento.
>
> 像风一样。
此外有一个问题:如果我选择备案,我应该是对主域名备案,用一个占位域名暂时提供服务,还是用新买的域名备案?如果是后者,那么备案之后两个域名如何处理?是原域名直接套 CloudFlare CDN 变成境外访问专属站点,还是对原域名做重定向呢?
以及我又有了转回 Hugo 的想法Hugo 的 [Blowfish](https://blowfish.page) 主题还挺好看的。

View file

@ -0,0 +1,61 @@
---
title: 申请 Notion 教育账户的一点事
date: 2024-04-01
slug: notion-edu-account
summary: 教育优惠也许会迟到,但永远不会缺席
description: 本文讲述了作者申请 Notion 教育账户的经历。作者尝试将账户邮箱更改为教育邮箱以获取 Notion Plus 的高级特性,但遇到验证码延迟的问题。通过联系 Notion 支持并多次尝试,最终成功切换为教育账户并享受了免费升级。作者最后表达了对 Notion 这类 All-in-one 软件的喜爱,并提到了一些替代工具。
tags:
- Chat
- Notion
- 博客
categories: ["百草园"]
---
各位老友们好,我是 Chlorine。
众所周知Notion Plus 有着各种各样的高级特性,例如 Notion AI。更妙的是Notion 仁慈地提供了教育优惠,只要你是学生/教师,就可以免费获得 Notion 教育账户,除了只有一个成员以外,可以使用 Notion Plus 的所有高级特性。
虽然我用 Notion 不多,基本只是拿来发个博客,但是这种白嫖的机会怎么能放过呢。
在 Notion 网页版里,点击 Settings & Members-My Account-Change email原来的邮箱接着验证码然后输入教育邮箱等着接验证码。
然后就没有然后了。
![|500](https://img.viento.cc/emoji/EMJ-confused.webp "黑人问号.webp")
我刷新页面,检查垃圾邮件文件夹,把邮箱翻了个遍也没翻到验证码。
以往这种时候,我就直接放弃了,但是今天我偏不。
在右下角找到 support直接把问题扔进去。
> Hi, I'm currently trying to change my Notion account to an educational one, but unfortunately due to some e-mail network issues or something I couldn't receive the identification code. Is there any other way to finish the identification?
立即就弹出来一个窗口,要求我输入邮箱和学校名称。
照做之后Support 窗口(我也不知道到底是人还是机器人)显示会有支持人员和我联系。
OK那就等吧。结果不到一分钟来了封邮件
![](https://img.viento.cc/IMG-20240401155437.webp)
嗯,那我先把能做的做了。邮件设置里面把 Notion 的邮件域名开个白名单。
然后不一会,验证码到了。
看一下时间,是 15:17 的,显然不能用了。
也就是说:**Notion 的邮件通知会有长时间的延迟。**
行吧,有延迟就有延迟,大不了再等会就得了。
在 15:56验证码又来了。然而这次又是错的可能是时间太长了。
好吧,那我再试一次。
这次来的倒是快,直接输入验证码,然后就成功切换为教育邮箱了。
然后在 Upgrade 界面中划到最底下,点击切换为教育计划即可。
然后就可以快乐白嫖了
说起来,感觉现在对 Notion 这样的 All-in-one 软件越来越青睐了。Notion 除了不能离线之外,几乎没毛病 ~~对数学公式的支持除外~~ 。现在的替代品,像 AnytypeAffine 和对 Markdown 支持非常好的思源笔记都还可以,等去研究下。

View file

@ -0,0 +1,82 @@
---
title: 离散数学——Bell数
date: 2024-04-27T07:12:00
slug: bell-number
categories: ["九章术"]
summary: 算点东西
description: 本文介绍了离散数学中的 Bell 数。作者介绍了集合的划分,然后引出了 Bell 数的定义并指出其比想象中复杂,并给出了一个递归表达式。最后作者给出了一份计算 Bell 数的 C++ 代码。
tags:
- 离散数学
math: true
---
最近复习离散数学的时候想到一个问题,记录一下。
首先科普一下 **集合的划分** 的知识:
对于集族 $\pi =\{ x \mid x \ \text{is a subset of A and satisfies some conditions} \}$ (奇妙定义法),如果其满足以下条件:
1. 不含空集: $\emptyset \notin \pi$
2. 装住 A $\cup \pi = A$
3. 元素彼此不交: $(\forall x)(\forall y)(x \in \pi \land y \in \pi)\to(x \cap y = \emptyset)$
那么称 $\pi$ 为 A 的一个 **划分**
我想到的问题是:对于一个含有 n 个元素的有限集合,其有多少种划分?
也可以表述成一个更加接地气的形式n 个不同的球,随便分,有多少种分法?
这道题目的结果称为 **Bell 数** 。看起来是一个简单的排列组合问题,但实际上比我们想象中复杂许多。利用现在的知识甚至难以给出一个显式的序列表达式,只能给出一个递归表达式:
$$
B_{n + 1} = \sum_{k=0}^{n}\binom{n}{n-k}B_{k} = \sum_{k=0}^{n}\binom{n}{k}B_{k}
$$
直观意义就是将多出来的那个元素单独一类,和某一个元素一类,和某两个元素一类……和剩下 n 个元素一类。
此外我去查阅了一些资料,由于知识浅薄,不敢卖弄,想了解更多的老友可以参考[这里](https://oi-wiki.org/math/combinatorics/bell/)。
最后附上一个我闲着没事写的 Bell 数计算代码(`千村万落生荆杞的动态规划.webp`)。
```cpp
#include <iostream>
using namespace std;
int dp_1[1000][1000] = {0}; // 二项式系数
int dp_2[1000] = {0}; // 贝尔数
int binary(int n, int k)
{
if (k == 0 || k == n)
{
return 1;
}
if (dp_1[n][k] != 0)
{
return dp_1[n][k];
}
int ret = binary(n - 1, k - 1) + binary(n - 1, k);
dp_1[n][k] = ret;
return ret;
}
int bell(int N)
{
if (N == 1)
{
return 1;
}
if (dp_2[N] != 0)
{
return dp_2[N];
}
int ret = 0;
for (int i = 1; i < N; i++)
{
ret += binary(N - 1, i - 1) * bell(i);
}
dp_2[N] = ret;
return ret;
}
```