Redian新闻
>
戴奥真尼斯 与 亚历山大大帝 zz
avatar
戴奥真尼斯 与 亚历山大大帝 zz# Parenting - 为人父母
U*y
1
Given a string S and a string T, find the minimum window in S which will
contain all the characters in T IN THE ORDER AS IT APPEARS IN T in
complexity O(n).
S = "ADOBECODEBANC"
T = "ABC"
Minimum window is NOT "BANC", but "ADOBEC"
avatar
x*i
2
“如果我不是亚历山大,那我宁愿是戴奥真尼斯。“——亚历山大
亚历山大大帝:
亚历山大大帝【Alexander the great(公元前356-前323年)】,古代马其顿国
王,亚历山大帝国皇帝,世界古代史上著名的军事家和政治家。他足智多谋,在担任马
其顿国王的短短13年中,以其雄才大略。东征西讨,先是确立了在全希腊的统治地位,
后又灭亡了波斯帝国。在横跨欧、亚的辽阔土地上,建立起了一个西起希腊、马其顿,
东到印度河流域,南临尼罗河第一瀑布,北至药杀水的以巴比伦为首都的庞大帝国。创
下了前无古人的辉煌业绩,促进了东西方文化的交流和经济的发展,对人类社会的进展
产生了重大的影响。
山不走到我这里来,我就到它那里去--亚历山大大帝;
把世界当作自己的故乡--亚历山大大帝;
把财富分给别人,把希望留给自己,她将带给我无穷无尽的财富--亚历山大大帝
当正义之剑挥出之时,听到作恶者的哭嚎是必然的! ——亚历山大大帝
狮子率领的羊群战斗力远胜由绵羊率领的狮子 ——亚历山大大帝
战胜恐惧,就能战胜死亡——亚历山大大帝在高加米拉大战之前
亚历山大大帝文武全才,少年求学于亚里士多德门下, 横扫天下时不忘收集各地的 人
文,地理,动植物知识。
戴奥真尼斯:最著名的犬儒学派人士是安提西尼的弟子狄奥根尼。
狄奥根尼,又名第欧根尼,戴奥真尼斯(希腊文Διογένης 英文
Diogenes,公元前404——323),古希腊哲学家,又名戴奥真尼斯,出生于一个银行家
家庭,犬儒学派的代表人物。约活跃于公元前4世纪,生于锡诺普(Σινώπη
,现属土耳其),卒于科林斯。他的真实生平难以考据,但古代留下大量有关他的传闻
轶事。
他 认为除了自然的需要必须满足外,其他的任何东西,包括社会生活和文化生活,都
是不自然的、无足轻重的。他强调禁欲主义的自我满足,鼓励放弃舒适环境。作为 一
个苦行主义的身体力行者,他居住在一只木桶内,过着乞丐一样的生活。每天白天他都
会打着灯笼在街上“寻找诚实的人”。狄奥根尼揭露大多数传统的标准和信 条的虚伪
性,号召人们回复简朴自然的理想状态生活。狄奥根尼认为:“每种通行的印戳都是假
的。人被打上了将帅与帝王的印戳,事物被打上了荣誉、智慧、幸福 与财富的印戳;
一切全都是破铜烂铁打上了假印戳罢了”。狄奥根尼对“德行”具有一种热烈的感情,
他认为和德行比较起来,俗世的财富是无足计较的。他追求德 行,并追求从欲望之下
解放出来的道德自由:只要你对于幸运所赐的财货无动于衷,便可以从恐惧之下解放出
来。后来他师承苏格拉底的弟子安提斯泰尼,以身作则 发扬了老师的“犬儒哲学”,
试图颠覆一切传统价值。他从不介意别人称呼他为“狗”,他甚至高呼“像狗一样活着
”。人们把他们的哲学叫做“犬儒主义”(Cynicism)。他的哲学思想为古希腊崇尚简
朴的生活理想奠定了基础。归到他名下但现已失传的各种著作中,有对话、戏剧和一部
《共和国》,该书描绘无政府主义者的乌托邦,人们在其中过着“自然”的生活。
儒主义是古希腊的一个哲学流派,其代表人物是西诺普的狄奥根尼。这派哲学主张清心
寡欲,鄙弃俗世的荣华富贵,力倡回归自然(这使人想起老庄哲学,想起某些魏晋名士
)。据说狄奥根尼本人住在一个桶里(又有一 说是住在瓮里),以讨饭为生。有人讥
笑他活得象条狗,他却不恼。“犬儒”之称由此得名。关于狄奥根尼,有段故事很著名
,一天,亚历山大御驾亲临,前来探望 正躺在地上晒太阳的狄奥根尼,问他想要什么
恩赐;狄奥根尼回答说:“只要你别挡住我的太阳。
戴奥真尼斯与亚历山大大帝:
戴奥真尼斯,他长着络腮胡子,没穿鞋,衣不蔽体,躺在什么也没有铺 垫的地上
,看上去像个叫花子或是疯子。他的确是个叫花子,但不是疯子。清晨太阳刚刚升起,
他就睁开眼睛,抓了一阵痒,像狗似的在路边撒了泡尿,然后在公用 的喷水池边洗了
洗脸讨了一块面包和几颗橄榄,蹲在地上吃了,再用手从喷泉那里捧几捧水把食物冲下
肚去。他没有工作要做,也没家庭需要照顾,所以很自由。等 他在集市上闲逛了一两
个小时后,集市才热闹起来,挤满了店主、商人、奴隶和外国人。所有的人不是认识他
就是听说过他的故事。他们会问他一些机警的问题,而 他也给他们一些更巧妙的回答
。有时人们会扔给他少许食物,而他就略表谢意。有人恶作剧你地向他扔块卵石,他就
还之以无数的石头,还加一阵谩骂。人们不知道 他到底是疯了还是没疯,但他知道这
些人都是疯子,各有各的疯法,这使他感到很有趣。现在他回到了自己的家。

他住的地方还算不上是间屋子,连乱搭乱盖的茅屋也算不 上。他认为人们的生活
太讲究、太昂贵、也太操心了。房子有什么用?没人需要藏藏掖掖,自然行为不是什么
丑事,大家都做着同样的事情,不必遮遮掩掩的。谁也 不需要床、椅子呀什么的;动
物就在地上睡,仍然过着健康的生活。当然,由于大自然没有赋予我们适当的衣着,我
们还需要一件衣服来御寒,再加上一个能遮风挡 雨的住处,仅此而已。所以他只有一
床毯子,白天当衣服,晚上当被子,他就睡在一个桶里。他叫戴奥真尼斯,人们叫他“
狗”,而把他的哲学称为“犬儒主义”。 他在希腊的柯林斯这座富裕、慵懒、败坏了
的城市里过了大半辈子,嘲笑那里的人,有时也改造一两个,使他们变幻成他的信徒。

他的住处还不是个木桶,那样太奢侈了。那是一个装酒的陶罐,毫无疑问的是因为
上面有了裂缝变的没有用了才让人给扔掉的。住这种桶的不止是他一个人,但出于一定
的原则,自己选这种桶作为住处的,他还是第一个。

戴奥真尼斯并不是疯子,而是一个哲学家。他写了很多剧 本、诗歌、小品文来阐
述自己的主张,谁愿意听他的主张,他就讲给谁听。他还收了一些学生,他们都很崇拜
他。但他主要以自己的行动来教育学生。他说,我们都 应该活的自然些,因为自然的
东西才是正常的,决不会是邪恶的或羞耻的。要摆脱那些社会习俗,那些都是人为的、
虚假的东西。要避开烦琐和奢华,只有这样人们 才能过上自由的生活。富人自认为拥
有深宅大院、华服骏马,还有仆人和银行存款,但他并非真正拥有,他依赖这些东西,
为这些东西操心,一生中大部分精力都花 在照看这些东西上了。是这些东西拥有了他
,他是这些东西的奴隶。为了得到一些虚假的、容易腐烂变质的货物,他卖掉了自己唯
一真实永恒的东西—他的独立。

有不少人由于厌倦了烦琐的人类社会生活,便离群索居, 躲到一边去过一种简单
的生活—住在一个小农场里、一个安静的小山村里或隐士住的山洞里。但戴奥真尼斯不
这样。他是个传教士他终生奋斗的目标非常清楚:他要 “重铸钱币”,他要把人生中
纯净的金子提炼出来,擦去上面那些虚伪传统的记号,根据它的真实价值来重新标价。

公元前4世纪的令一些哲学家,如柏拉图和亚里士多德, 主要是教授他们自己的学
生。但对戴奥真尼斯来说,在一大群人中可以找到实验室、标本、教室和学生。所以他
选择雅典和柯林斯作为自己的活动场所,那里常有地 中海沿岸国家的游客来来往往。
在这些地方,他有意在众人面前展示自己的生活方式,以便告诉人们什么是真正的生活


他认为大多数人都没有充分利用自己的生命,都只能算上半个人。在一个阳光灿烂
的中午,他拿着一展灯穿过集市,仔细审视他遇见的每一个人的面孔。人们问他为什么
这样做,他回答说:“我想看看有没有完整的人。”

有一个绅士还在让仆人为他穿鞋,戴奥真尼斯对他说:“你只有等仆人帮尼擦鼻涕
时才会幸福。你不用你的手,总有一天会到那一地步的。”

有一次传说要打仗了,战争的威胁使得一向慵懒、只追求赚钱享受的柯林斯人也紧
张起来。他们开始训练,磨刀擦枪,重建早被遗忘在一边的防御工事。戴奥真尼斯带上
自己的桶,把它滚来滚去。“你们都这么忙,”他说,“我觉得我也该干点什么。”

他就这样生活—有人说他像条狗,因为他毫不顾及社会习俗,还因为他那些不喜欢
他的人咧开嘴,露出牙齿,像狗一样吠叫。现在他躺在阳光下,心满意足,非常幸福,
比波斯国王还幸福。他知道马上就要会见一个非常重要的来访者,但他不愿挪步。

小广场上人越来越多。小听差、士兵、秘书、军官、外交 官们纷纷围在戴奥真尼
斯身边,形成一个圆圈。他一个个审视他们,像一个清醒的人审视一群东倒西歪的醉鬼
一样,然后他摇了摇头。他知道这是些什么人,他们是 征服了希腊的马其顿国王亚历
山大的仆人,这位国王正在视察他新征服的土地。
亚历山大才20岁,但他看上去成熟的多,聪明才智也远远超过他的年龄。他向所有
的马其顿人一样,爱喝酒,但他能控制住自己。他对待女人也很有节制,显得高尚殷勤
。 亚历山大也像所有马其顿人一样热爱战斗。他是个了不起的指挥官,但不是一台战
争机器。他有头脑,13岁就成了希腊最伟大的思想家亚里士多德的学生,从老师 那里
学到了希腊文化的精华。亚里士多德教亚历山大诗歌,这位年轻的国王非常喜欢荷马的
诗,因此他将《伊利亚特》放在枕下入眠,希望能够赶超将亚洲的强大国 家摧毁的阿
基里斯。亚里士多德也教他哲学,特别是政治力量的不同形式和用途。他还交他科学研
究的原则:亚历山大侵入波斯时带去一批科学家,并将成千上万种 动物标本运回希腊研
究。正是从老师那里,亚历山大学会了寻求那些可能有教育意义的奇特事物。

现在,亚历山大来到柯林斯接管由他父亲缔造的“希腊城邦联盟”。他受到人们的
欢迎、崇敬和谄媚。他成了那个年月的名人、那个世纪的名人,大家一致提名让他 担
任远征军的指挥官,去征服那个古老、富裕、败坏的亚洲。几乎所有的人都涌到柯林斯
向他表示祝贺,到他身边谋职,还有的仅仅是为了看他一眼。只有戴奥真尼 斯不去遏
见这位新君主,虽然他也住在柯林斯。亚历山大从亚里士多德那里学到了宽宏大量,所
以他决定亲自去拜访戴奥真尼斯。

亚历山大相貌英俊,目光炯炯,体格健壮,身披紫金色的 斗篷,带着世界主宰者
的气派,穿过自动分开的人群,向那“狗窝”走去。一旦国王驾临,所有的人都会崇敬
的站起身来,而戴奥真尼斯只是以一肘支起身体。当君 主莅临某处时,所有的人都会
向他鞠躬欢呼,但戴奥真尼斯一声不吭。

一时寂静无声。亚历山大先开了口,和气地向戴奥真尼斯问好。他看了看那和又破
又糟的陶罐、那惟一的一床破破烂烂的毯子,还有那躺在地上不修边幅的人,不禁问道
:“戴奥真尼斯,我能帮你吗?”

“能,” 那个被称为“狗”的人说,“请帮忙往旁边站一点,你挡住了我的阳光。

人们惊讶的说不出话来。亚历山大慢慢转过身去。那些自命清高的希腊人忍不住笑
了起来。马其顿军官觉得戴奥真尼斯还不值得用脚踢,于是都狂笑起来,你推我,我戳
你。 亚历山大没有笑,他对离的最近的人小声说:“如果我不是亚历山大,我就会做戴
奥真尼斯。”人们只把这当做怪论,但亚历山大说的是真心话。别人不理解犬儒主 义
,但他能理解。戴奥真尼斯把自己当做“世界公民”,而亚历山大也是世界公民。他向
戴奥真尼斯一样崇拜赫拉克勒斯,因为当人们都在为自己流汗劳作时,他却 为人类辛
勤劳动。他知道那个时候所有活在世上的人,只有他们—征服者亚历山大和叫花子戴奥
真尼斯是自由的。
来源:网络
A Dialogue between Alexander the Great, and Diogenes the Cynic (1743)

https://en.wikisource.org/wiki/A_Dialogue_between_Alexander_the_Great,_and_
Diogenes_the_Cynic
avatar
l*u
3
只能单向扫一遍S吧。坐等更好方法。

【在 U*********y 的大作中提到】
: Given a string S and a string T, find the minimum window in S which will
: contain all the characters in T IN THE ORDER AS IT APPEARS IN T in
: complexity O(n).
: S = "ADOBECODEBANC"
: T = "ABC"
: Minimum window is NOT "BANC", but "ADOBEC"

avatar
d*h
4
赞,多谢搬运
咱知道自己只是一只不会飞的猪,虽然佩服会飞的鸟。。。
最后一句存疑,有自由的人吗?

【在 x*****i 的大作中提到】
: “如果我不是亚历山大,那我宁愿是戴奥真尼斯。“——亚历山大
: 亚历山大大帝:
: 亚历山大大帝【Alexander the great(公元前356-前323年)】,古代马其顿国
: 王,亚历山大帝国皇帝,世界古代史上著名的军事家和政治家。他足智多谋,在担任马
: 其顿国王的短短13年中,以其雄才大略。东征西讨,先是确立了在全希腊的统治地位,
: 后又灭亡了波斯帝国。在横跨欧、亚的辽阔土地上,建立起了一个西起希腊、马其顿,
: 东到印度河流域,南临尼罗河第一瀑布,北至药杀水的以巴比伦为首都的庞大帝国。创
: 下了前无古人的辉煌业绩,促进了东西方文化的交流和经济的发展,对人类社会的进展
: 产生了重大的影响。
: 山不走到我这里来,我就到它那里去--亚历山大大帝;

avatar
U*y
5
发现是EPI的12.15。看了下EPI的解法觉得有问题:在成功扫出来一个range之后,接下
来扫貌似都没有enforce ordering.

【在 l*********u 的大作中提到】
: 只能单向扫一遍S吧。坐等更好方法。
avatar
d*h
6
爱恨的世事纠缠无常
悲欢离合
还是
旧情难忘
。。。。
。。。
不再理会,尘世忧伤
抛开一切,走进天堂

【在 x*****i 的大作中提到】
: “如果我不是亚历山大,那我宁愿是戴奥真尼斯。“——亚历山大
: 亚历山大大帝:
: 亚历山大大帝【Alexander the great(公元前356-前323年)】,古代马其顿国
: 王,亚历山大帝国皇帝,世界古代史上著名的军事家和政治家。他足智多谋,在担任马
: 其顿国王的短短13年中,以其雄才大略。东征西讨,先是确立了在全希腊的统治地位,
: 后又灭亡了波斯帝国。在横跨欧、亚的辽阔土地上,建立起了一个西起希腊、马其顿,
: 东到印度河流域,南临尼罗河第一瀑布,北至药杀水的以巴比伦为首都的庞大帝国。创
: 下了前无古人的辉煌业绩,促进了东西方文化的交流和经济的发展,对人类社会的进展
: 产生了重大的影响。
: 山不走到我这里来,我就到它那里去--亚历山大大帝;

avatar
g*e
7
epi里有原题
avatar
x*i
8
想着戴降落伞就行:)
不知道答案。。。

【在 d**********h 的大作中提到】
: 赞,多谢搬运
: 咱知道自己只是一只不会飞的猪,虽然佩服会飞的鸟。。。
: 最后一句存疑,有自由的人吗?

avatar
d*g
9
等价于找等于T的并且在S中对应substring最短的LCS,不可能O(n)吧

【在 U*********y 的大作中提到】
: Given a string S and a string T, find the minimum window in S which will
: contain all the characters in T IN THE ORDER AS IT APPEARS IN T in
: complexity O(n).
: S = "ADOBECODEBANC"
: T = "ABC"
: Minimum window is NOT "BANC", but "ADOBEC"

avatar
x*i
10
人间天堂和人间地狱的不同就是两个字的差别。。。
“不离日用常行内,直造先天未画前。”

【在 d**********h 的大作中提到】
: 爱恨的世事纠缠无常
: 悲欢离合
: 还是
: 旧情难忘
: 。。。。
: 。。。
: 不再理会,尘世忧伤
: 抛开一切,走进天堂

avatar
z*8
11
T没有重复字母应该可以O(n), 有重复的话, 每次更新,需要找最小index
avatar
d*h
12
此言极是
没有先天的,就修个后天的吧!

【在 x*****i 的大作中提到】
: 想着戴降落伞就行:)
: 不知道答案。。。

avatar
d*g
13
删除S中不属于T的字符得到S',match T with S',O(m+n)

【在 d******g 的大作中提到】
: 等价于找等于T的并且在S中对应substring最短的LCS,不可能O(n)吧
avatar
d*h
14
极是极是
只是一时恍惚,其实哪有地狱和天堂,只有人间罢了

【在 x*****i 的大作中提到】
: 人间天堂和人间地狱的不同就是两个字的差别。。。
: “不离日用常行内,直造先天未画前。”

avatar
l*8
15
S = "ABBC"
B = "ABC"
怎么办?

【在 d******g 的大作中提到】
: 删除S中不属于T的字符得到S',match T with S',O(m+n)
avatar
p*3
16
先build reverse index lists, 然后再linear scan multiple lists
avatar
d*g
17
嗯,这个办法不对

【在 l*********8 的大作中提到】
: S = "ABBC"
: B = "ABC"
: 怎么办?

avatar
w*s
18
记录pattern中所有字母在原来string的位置
A:0,10
B:3,9
C:5,12
ABC的话,从A开始取出0,找到B开始第一个>0的位置:3,找到C>3的第一个位置5
[0-5]成为一个window
pop掉A:0后
A:10
B:3,9
C:5,12
然后A=10,B中3<10, pop掉,9<10, pop掉,没有元素了,结束。
因为每次循环总能pop掉至少1个元素,总共有n个元素,所以是O(n)

【在 U*********y 的大作中提到】
: Given a string S and a string T, find the minimum window in S which will
: contain all the characters in T IN THE ORDER AS IT APPEARS IN T in
: complexity O(n).
: S = "ADOBECODEBANC"
: T = "ABC"
: Minimum window is NOT "BANC", but "ADOBEC"

avatar
w*d
19
我觉得你的算法复杂度应该是O(S*T),例如:S="AAAAAAAAABC", T="ABC";
每次pop一个A的index,都要进行B和C的检查,总共需要(len(S)-2)*len(T)次计算。
不过我认为这个算法已经是目前最好的了。
我怀疑是否存在O(N)的算法。

【在 w********s 的大作中提到】
: 记录pattern中所有字母在原来string的位置
: A:0,10
: B:3,9
: C:5,12
: ABC的话,从A开始取出0,找到B开始第一个>0的位置:3,找到C>3的第一个位置5
: [0-5]成为一个window
: pop掉A:0后
: A:10
: B:3,9
: C:5,12

avatar
p*o
20
(Please use monospaced font to read)
Example:
i: 0 1 2 3 4 5 6 7 8 9
S0: a a b x c a b x c b
T0: a b c b
expected output: [5,10)
n=len(S0), m=len(T0)
Collect indices in S0: O(n) time
a: 0 1 5
b: 2 6 9
c: 4 8
I wanted to use dynamic programming,
but I did not find any optimal substructure.
So I chose to backtrack on these indices instead.
T0: a b c b
i: 0 1 2 3 4 5 6 7 8 9
S0: a a b x c a b x c b
S1: a _ b _ c _ b _ _ _ -> [0,7)
S2: a _ b _ c _ _ _ _ b -> [0,10)
S3: a _ b _ _ _ _ _ c b -> [0,10)
S4: a _ _ _ _ _ b _ c b -> [0,10)
S5: _ a b _ c _ b _ _ _ -> [1,7)
S6: _ a b _ c _ _ _ _ b -> [1,10)
S7: _ a b _ _ _ _ _ c b -> [1,10)
S8: _ a _ _ _ _ b _ c b -> [1,10)
S9: _ _ _ _ _ a b _ c b -> [5,10) best
Compare across S1..S9 we pick S9.
But do we really have to do this comparison at this final stage?
No. Note that in solutions S1..S4 where the index of 'a' is 0,
when solution S1 is found, we don't need to explore S2..S4 at all.
Similarly, in solutions S5..S8 where the index of 'a' is 1,
once S5 is found, we don't need to explore S6..S8 any more.
The greedy principle applies here.
So in the end, we only need to compare S1, S5, S9.
i: 0 1 2 3 4 5 6 7 8 9
S1: a _ b _ c _ b _ _ _ -> [0,7)
S5: _ a b _ c _ b _ _ _ -> [1,7)
S9: _ _ _ _ _ a b _ c b -> [5,10) best
def greedy (s_indices, s, t, si_begin, tj):
if tj >= len(t):
return si_begin
for si in s_indices[t[tj]]:
if si >= si_begin:
return greedy (s_indices, s, t, si+1, tj+1)
def min_win_subs (s, t):
tset = set(t)
s_indices = dict()
for i, c in enumerate(s):
if c in tset:
s_indices.setdefault(c, []).append(i)
min_win_size = 999999
for si_begin in s_indices[t[0]]:
si_end = greedy (s_indices, s, t, si_begin+1, 1)
if si_end is None: continue
if si_end - si_begin < min_win_size:
si_min_begin = si_begin
si_min_end = si_end
min_win_size = si_end - si_begin
return si_min_begin, si_min_end
if __name__ == '__main__':
print(min_win_subs('aabxcabxcb', 'abcb')) # [5,10)
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。