【娛樂(lè)向】從數(shù)學(xué)角度分析,MC完全下吸門(mén)的開(kāi)門(mén)時(shí)間得多長(zhǎng)?

? ? ? ? 最近我發(fā)現(xiàn)一位UP(B站:https://space.bilibili.com/328038328)竟然在做10x10完全下吸,時(shí)序采用我的套路,瘋狂重走,而且做的還挺好。

"(o?Д?o*)
? ? ? ? 回想起之前我搞完全下吸10x10的時(shí)候,自己想到了這套路,成功減少大量布線,體積比完全下吸9x9還小2333。不過(guò)顯而易見(jiàn)的缺點(diǎn)是,由于反復(fù)重走,活塞有許多冗余的動(dòng)作,最后導(dǎo)致門(mén)的運(yùn)行時(shí)間非常長(zhǎng)。
? ? ? ? 那么完全下吸門(mén)的開(kāi)門(mén)時(shí)間得多長(zhǎng)呢?我分析了下我的套路,竟然還找到規(guī)律,那我不妨去算算開(kāi)門(mén)時(shí)間。

? ? ? ? 這里附上我曾經(jīng)在2017年7月25號(hào)發(fā)布的10x10完全下吸門(mén)。各位可以仔細(xì)觀察活塞運(yùn)行動(dòng)作,嘗試尋找下規(guī)律。
? ? ? ? 我分別統(tǒng)計(jì)了下吸1到下吸10電路運(yùn)行所需要的時(shí)間,分別是4s,5s,14s,26s,58s,120s,250s,434s,813s,1638s。不過(guò)作圖更容易找出規(guī)律。我作了個(gè)柱形圖以及餅圖。


? ? ? ? 很直觀的感受是,下吸每增加一級(jí),所用時(shí)間約是原來(lái)一級(jí)的兩倍,即翻番。當(dāng)然這只是初步判斷,誤差可能很大。不過(guò),既然我已經(jīng)知道時(shí)序的工作規(guī)律,為啥不建立一個(gè)數(shù)學(xué)模型去分析呢?

模型一
? ? ? ? 不知道大家看我的視頻是否發(fā)現(xiàn)這個(gè)規(guī)律,比如我要下吸第n層的方塊,就要先把活塞運(yùn)到第(n-2)層,然后運(yùn)送觀察者去激活活塞,方塊被拉到第(n-1)層,接著把(n-2)層的活塞收回,最后把(n-1)層的方塊收回。整個(gè)過(guò)程可以由下圖表示:





轉(zhuǎn)化成時(shí)序的話,如果要吸走第n層方塊,則:
1、運(yùn)行下吸(n-2)
2、推觀察者上去,去激活,并收回觀察者。
3、運(yùn)行下吸(n-2)
4、運(yùn)行下吸(n-1)
? ? ? ? 可以發(fā)現(xiàn)除了第2步,別的都是重走(實(shí)際上第2步里也有重走成分),為了簡(jiǎn)化模型,我就當(dāng)做第2步都是自己重新布線。按照這套路,經(jīng)過(guò)簡(jiǎn)單粗暴的分析,即得到如下結(jié)果:

先說(shuō)明下圖中符號(hào)的含義:
? ? ? ? 每一級(jí)下吸都有布線的成分(即非重走部分),這部分的運(yùn)行時(shí)間記為tn,n為下標(biāo)。而整個(gè)下吸n運(yùn)行的總時(shí)間用Tn表示。重走時(shí)間要花費(fèi)對(duì)應(yīng)為T(mén)n(除非中斷重走),然后消去Tn,得到只含有tn的式子?,F(xiàn)在,我得到了Tn需要重走多少個(gè)tn了,嗯哼?我貌似得到一個(gè),數(shù)列?!
? ? ? ? 是的,我得到一個(gè)數(shù)列,它是1,1,3,5,11,21,43,85,171,341,...
被老師罵考前還搞這么難的題后,我得到了這個(gè)數(shù)列的通項(xiàng)公式:

于是Tn和總開(kāi)門(mén)時(shí)間Sn也有表達(dá)式了。

? ? ? ? 那么tn是多少呢?這個(gè)就得實(shí)測(cè)了QAQ,既然我已經(jīng)有個(gè)10x10活塞門(mén)了,那就拿它作樣本咯。經(jīng)過(guò)計(jì)算,可以得到tn的數(shù)據(jù),t1到t7的數(shù)據(jù)分別為:4s,1s,1s,2s,4s,10s,14s。額,為什么沒(méi)有t8,t9,t10的數(shù)據(jù)?
? ? ? ? 因?yàn)樵谙挛?,我改變了時(shí)序,以便減少運(yùn)行時(shí)間,所以已經(jīng)不符合這個(gè)數(shù)學(xué)模型了。如果硬要代進(jìn)去算,算得t8是一個(gè)負(fù)數(shù)。
(=′ー`)?
還是作圖,觀察規(guī)律。

用回歸方程去擬合這些點(diǎn)

? ? ? ? 這里我建立了兩個(gè)回歸模型,一個(gè)是指數(shù)模型,一個(gè)是多項(xiàng)式模型。可見(jiàn)多項(xiàng)式模型的R2值比指數(shù)模型的更大,即多項(xiàng)式模型的擬合效果更好。
這樣我使用回歸方程y=0.797619x2-4.55952x+7.42857來(lái)近似代表tn。合理外延,可以預(yù)測(cè)其它tn的大致數(shù)值。
? ? ? ? 現(xiàn)在我就可以把數(shù)據(jù)放入電腦進(jìn)行運(yùn)算,得到下吸門(mén)單獨(dú)下吸n的運(yùn)行時(shí)間和總運(yùn)行時(shí)間了。藍(lán)色點(diǎn)代表單個(gè)下吸耗時(shí),橙色叉叉是下吸到這一級(jí)的總時(shí)間,即開(kāi)門(mén)時(shí)間,單位為秒(s)。

╮( ̄▽ ̄)╭
嗯哼,暈了?不妨休息下,看一看如果要做到下吸20,50,甚至是100,運(yùn)行時(shí)間大致多久?

? ? ? ? 這里的單位是秒,也就是說(shuō),單純下吸20所需時(shí)間是2163576秒左右,總開(kāi)門(mén)時(shí)間是4326352秒左右,換算下大概是50天。
那么下吸50呢?

下吸50的開(kāi)門(mén)總時(shí)間大概是147 3427個(gè)世紀(jì)。別怕,還有下吸100呢!

? ? ? ? 換算下總開(kāi)門(mén)時(shí)間大概是1.659x10^15 億年。而宇宙大爆炸到現(xiàn)在都沒(méi)有那么久,可見(jiàn)按照我這套路是不可能做到完全下吸100的。就算做出來(lái),你也得需要加速10^28倍左右,目前來(lái)說(shuō),沒(méi)有電腦能接受這個(gè)指令:“/tickrate 200000000000000000000000000000”
? ? ? ? 這么比較的話,那些大型飛行器門(mén)簡(jiǎn)直就是高速門(mén)了,那些飛行器門(mén)工作的幾個(gè)小時(shí)與這幾十次方年比起來(lái),不知快了多少倍。
_(:з」∠)_

模型二
? ? ? ? 除了上面的工作模型,我看那位UP用的是不同的工作方式,那我不妨再建立一個(gè)模型分析下。
? ? ? ? 觀察他的視頻,可以發(fā)現(xiàn)他是先把活塞和觀察者一起推上去,這樣可以省下不少時(shí)間(可能也和BE版不能瞬推方塊有關(guān)),再一排排收回。那么:


我又得到了一個(gè)討厭的數(shù)列,它是:1,1,2,3,6,11,20,37,68,125,230,...
算了四天之后,我得到這個(gè)數(shù)列的通項(xiàng)公式:

(╯'?-?')╯︵?┻━┻?
于是可以寫(xiě)出單個(gè)下吸所需時(shí)間Tn和開(kāi)門(mén)總時(shí)間Sn。

? ? ? ? 我還是需要測(cè)出tn的值,既然那位UP主已經(jīng)發(fā)布視頻了,我就直接從視頻里獲取數(shù)據(jù)(雖然不太準(zhǔn)),得到T1至T7分別為:7s,12s,25s,54s,102s,189s,354s,由此算得t1至t7分別為:7s,5s,6s,17s,16s,14s,26s。為啥沒(méi)有t8以后的數(shù)據(jù)?因?yàn)橐曨l里只到下吸7。繪制tn的散點(diǎn)圖,這……

這些點(diǎn)怎么這么奇怪=_=,但還是用回歸方程擬合一下:

畢竟點(diǎn)比較詭異,不知道用哪個(gè)回歸模型擬合較好,于是我把三個(gè)不同的回歸模型寫(xiě)出來(lái):
I、3.0357x+0.8571。R2=0.7501
II、0.369x2+0.0833x+5.2857。R2=0.7834
III、4.098e^(0.2492x)。R2=0.749
? ? ? 于是我根據(jù)三個(gè)不同的模型分別計(jì)算單個(gè)下吸的開(kāi)門(mén)時(shí)間,并且與原數(shù)據(jù)進(jìn)行比對(duì),算出其殘差和殘差的方差:

? ? ? ? 可以發(fā)現(xiàn),使用II(多項(xiàng)式)模型的回歸方程算出結(jié)果與實(shí)際值更加接近,其殘差的方差也最小,并且R2值是三個(gè)模型中最大的。于是tn可以使用II回歸方程近似代替。
? ? ? ? 額對(duì)了,an的通項(xiàng)公式由于存在虛數(shù),用于計(jì)算的程式并不能計(jì)算復(fù)數(shù)(也可能有這功能但我不會(huì)用),我在算通項(xiàng)公式時(shí)無(wú)意間推出了它的近似表達(dá)式,誤差在0.1以下(n≥5),隨著n增大,誤差越小。

? ? ? ? 現(xiàn)在可以把這些數(shù)據(jù)交給電腦,我預(yù)測(cè)下下吸8,下吸9,下吸10所需的運(yùn)行時(shí)間。順便也皮一下把下吸20,下吸50,下吸100也算下。圖中藍(lán)色點(diǎn)為T(mén)n,單個(gè)下吸運(yùn)行時(shí)間,橙色叉叉為Sn,為整個(gè)開(kāi)門(mén)時(shí)間,單位為秒。
_(|3」∠)_


? ? ? ? 由圖中數(shù)據(jù)可大致得出T8=653s,約10.9分鐘;T9=1209s,約20.2分鐘;T10=2234s,約37.2min??傞_(kāi)門(mén)時(shí)間Sn大約是S8=1467s,約24.5分鐘;S9=2676s,約44.6分鐘;S10=4910s,約81.8分鐘(1h22min)。
繼續(xù)皮,看一下下吸20,下吸50,下吸100所需時(shí)間。



? ? ? ? 這里只看Sn數(shù)據(jù),換算下時(shí)間S20大約是25.3天,S50大約6 0216.9個(gè)世紀(jì),S100大約1.028x10^12 億年。
?
? ? ? ? 這時(shí)間確實(shí)是等不來(lái)的,不過(guò)對(duì)比上面的數(shù)據(jù)會(huì)發(fā)現(xiàn)一個(gè)蹊蹺的地方。模型一是從PC java版的MC取數(shù)據(jù)的,而模型二是從基巖版的MC上取數(shù)據(jù)的,而且大家都知道java版的紅石響應(yīng)速度一般都快于基巖版,為什么模型一算出的結(jié)果比模型二的還大呢?一開(kāi)始我也愣了一下,不過(guò)想了下這兩個(gè)模型的區(qū)別就可以知道了。比較一下模型一的數(shù)列an和模型二的數(shù)列an,如果把a(bǔ)n簡(jiǎn)化成等比數(shù)列來(lái)看,模型一的公比是2,而模型二的公比是1.839,雖然兩者差不多,但是在n很大時(shí),底數(shù)的微小差別也會(huì)被放大許多,這也是指數(shù)函數(shù)的特性??梢?jiàn)隨著n增大,時(shí)序和紅石的響應(yīng)速度對(duì)時(shí)間的影響,前者影響更大。這也可以從我的10x10活塞門(mén)體現(xiàn),從下吸8開(kāi)始的時(shí)序已經(jīng)和下吸7不同了,模型一計(jì)算出的開(kāi)門(mén)時(shí)間是比實(shí)際偏大了700秒左右(反過(guò)來(lái)說(shuō)就是我省下了700秒)。
? ? ? ? 當(dāng)然,tn我使用回歸方程去代替,其本身的誤差也比較大,而回歸方程一般不宜外延,所以外延算出的數(shù)據(jù)這里僅用來(lái)參考,并不絕對(duì),而且活塞門(mén)的制作過(guò)程各種延時(shí)是無(wú)法預(yù)測(cè)的,最終活塞門(mén)成品的運(yùn)行時(shí)間與這些模型算出的時(shí)間存在幾秒至幾十秒的誤差也可以接受。n越大,誤差也越大,比如下吸50,誤差幾十個(gè)世紀(jì)都可以接受的,如果誤差還是幾秒,這模型也太準(zhǔn)了吧。

? ? ? ? 這篇專欄就到此結(jié)束惹,如果各位有更好的模型,或者發(fā)現(xiàn)我的計(jì)算上出現(xiàn)失誤的話,歡迎在評(píng)論留言。
( ̄▽ ̄)~*
在此感謝影叔(B站:https://space.bilibili.com/13658976/),瓜君(B站:https://space.bilibili.com/7486276/),無(wú)痕(B站:https://space.bilibili.com/66583959/)。
?