Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

You\'re helping a group of ethnographers analyze some oral history data they\'ve

ID: 3668588 • Letter: Y

Question

You're helping a group of ethnographers analyze some oral history data they've collected by Interviewing members of a village to learn about the lives of people who've lived there over the past two hundred years. From these Interviews, they've learned about a set of it people (all of them now deceased), whom we'll denote P_1, P_2 ... ,P . They've also collected facts about when these people Lived relative to one another. Each fact has one of the following two forms: For some l and j, person P_l died before person P_j was horn; or for some I and f, the life spans of P_1 and P_1 overlapped at least partially. Naturally, they're not sure that all these facts are correct; memories are not so good, and a lot of this was passed down by word of mouth. So what they'd like you to determine is whether the data they've collected Is at least internally consistent, in the sense that there could have existed a set of people for which all the facts they've learned simultaneously hold. Give an efficient algorithm to do this: cither it should produce proposed dates of birth and death for each of the n people so that all the facts hold true, or it should report (correctly) that no such dates can exist-that is, the facts collected by the ethnographers are not internally consistent.

Explanation / Answer

1 A deterministic model of birth and death Consider a population and imagine that each individual gives birth to an offspring or dies according a certain rule. Let the population size be N and we focus on the dynamics of N as a function of time t. If both birth and death occur at a constant rate, say, and , respectively, the net change of the population size N within a short time interval t is given as

N = N(t + t) N(t) = tN tN

because there are N individuals and each individual gives birth and dies with the rate t and t, respectively

By arranging this equation and letting t 0 we have a differential equation dN dt = ( )N (1) The solution is N(t) = N(0) exp[( )t] (2) where N(0) is initial population size.

It is obvious that the population size N exponentially increases when the birth rate exceeds the death rate, > , and it exponentially decreases toward zero when < . If we take the logarithm of N(t), it increases or decreases linearly with time t and the slop is given by because log N(t) = log N(0) + ( )t. This is a deterministic model of birth and death. is the net rate of increase per individual.

As in the previous deterministic immigration-emigration model the population size should be interpreted as “density”, not the number of individuals as non-negative integer. The difference is that and in the immigration-emigration model are now replaced with N and N where N is the population size as density. We now want to derive a stochastic model that corresponds to this deterministic model.

2 A stochastic model We assume that the birth rate is the probability that an individual gives birth to an offspring and that the death rate the probability that the individual dies within a unit time. We also assume that within a short time interval t, only one of the following three cases occurs mutually exclusively; an individual 1) gives birth to an offspring, 2) dies, or 3) neither gives birth nor dies. This stochastic birth-death process could be implemented using the algorithm with a constant time interval t small enough.

For all individuals repeat 1) Give birth to a new individual with probability t.

2) Remove this individual with probability t.

---------------------------------------------------------------------------------------

Here is an outline of the program that simulates this stochastic process.

#define BIRTH_RATE 0.03

#define DEATH_RATE 0.02

#define DT 0.1

#define INTV 10

main()

{

int pop_size, new_indiv, dead_indiv, i, step; double prob_birth, prob_death, ran;

prob_birth = BIRTH_RATE* DT;

prob_death = DEATH_RATE * DT;

pop_size = 10;

/* initial population size */

for(step=0; step<5000; step++)

{

/* advance the time by DT */

if( step%INTV == 0)

printf("%d ", pop_size);

new_indiv = 0;

dead_indiv = 0;

for(i=1; i<=pop_size; i++)

{

/* for all individuals */ ran = genrand_real1();

if( ran < prob_birth ) new_indiv++;

else if( prob_birth < ran && ran < prob_birth + prob_death ) dead_indiv++;

}

/* end of for i */ pop_size += (new_indiv - dead_indiv) ;

} /* end of for step */

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote