Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Evoluution algoritmillinen todistus! :)

PetriKeckman [30.05.2023 20:52:08]

#

Syanobakteeri voi kolminkertaistaa populaationsa päivässä *1) Olkoon ollut vuosimiljardeja sitten jokin 10 000 bakteerin populaatio, joka lisääntyi myös tuolla määrällä. Ja oletetaan, että se bakteeri pysyi hengissä viikon. Sitten syntyi yksi ainoa mutaatio, mikä pystyikin 3.1 kertaistamaan itsensä vuorokaudessa samoin kuin sen jälkeläiset. Kuinka kauan kesti, että mutaaatio oli vallannut 90% populaatiosta?

Vastaus: 462 vuorokautta

Tosin tarkastelu on kovin teoreettinen, sillä 462 vuorokauden kuluttua bakteereja olisi noin 1.38E+283 ja maailmankaikkeudessa on vain noin 1.57E+81 protonia. Eli koska populaatiota täytyy "hieman" :) rajoittaa, niin syntyy kamppailua elintilasta ja hengissätaistelua. Bakteerit, jotka pystyvät keskenään yhteystyöhön toisten kanssa pärjäävät paremmin ja näin kehittyvät monisoluiset eliöt.

Jos mennään evoluutiossa taaksepäin, eli siihen, kun oli jakaantuvia molekyylejä, niin samaa logiikkaa voidaan käyttää: eksponentiaalinen lisääntyminen on niin tehokasta, että molekyylit, jotka pystyivät yhteistyöhön ja käyttämään elintilansa resursseja tehokkaammin pärjäsivät paremmin ja näin syntyivät alkeelliset solut.

1*)=https://en.wikipedia.org/wiki/Bacterial_growth "Under controlled conditions, cyanobacteria can double their population four times a day and then they can triple their population."

rebol[]
print "Odota"
lkm1: 1e+4
lkm2: 1.0
päivä: 1
määrät1: copy[];pidetään muistissa blockissa määriä, jotta voidaan vähentää viikon takainen määrä
määrät2: copy[]
until [
	either (length? määrät1) < 7 [
		append määrät1 lkm1
	][
		lkm1: lkm1 - määrät1/1 ;vähennetään viikon takainen määrä
		remove/part määrät1 1
		append määrät1 lkm1
	]

	either (length? määrät2) < 7 [ ;tehdään sama populaatiolle 2
		append määrät2 lkm2
	][
		lkm2: lkm2 - määrät2/1 ;vähennetään viikon takainen määrä
		remove/part määrät2 1
		append määrät2 lkm2
	]

	lkm1: lkm1 + (lkm1 * 3)
	lkm2: lkm2 + (lkm2 * 3.1)
	pros: 100 * lkm2 / (lkm1 + lkm2)
	print [päivä lkm1 lkm2 pros (lkm1 + lkm2)]
	päivä: päivä + 1
	pros > 90
]
halt
Odota
1 40000.0 4.1 1.0248949482678E-2 40004.1
2 160000.0 16.81 1.05051463030665E-2 160016.81
3 640000.0 68.921 1.07677466814546E-2 640068.921
4 2560000.0 282.5761 1.10369106378265E-2 2560282.5761
5 10240000.0 1158.56201 1.13128021891755E-2 10241158.56201
6 40960000.0 4750.104241 1.15955894492524E-2 40964750.104241
7 163840000.0 19475.4273881 1.18854447307994E-2 163859475.427388
8 655320000.0 79845.15229121 1.21826626725334E-2 655399845.152291
.
.
.
453 5.26440371948301E+276 3.81187078016108E+277 87.8653154766842 4.33831115210938E+277
454 2.10563291521702E+277 1.562786746981E+278 88.1262420306209 1.77335003850271E+278
455 8.42201740196466E+277 6.40709656069786E+278 88.3822998414541 7.24929830089432E+278
456 3.36860126978424E+278 2.62677466502762E+279 88.6335479699775 2.96363479200604E+279
457 1.34735823653664E+279 1.07692229631068E+280 88.8800461587606 1.21165811996434E+280
458 5.38910388073149E+279 4.41515462948499E+280 89.1218547563839 4.95406501755814E+280
459 2.15550993416333E+280 1.81012042085524E+281 89.3590346441333 2.02567141427158E+281
460 8.62151329628138E+280 7.42111253842848E+281 89.5916471651601 8.28326386805661E+281
461 3.44839475522103E+281 3.04249986208098E+282 89.8197540561107 3.38733933760308E+282
462 1.37927368191439E+282 1.24736087248759E+283 90.0434173812209 1.38528824067903E+283
>>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta