2013-02-19 4 views
0

특정 조건에서 정상적으로 반복되고 다른 조건에서 확률 e^(E/온도)로 반복되어야하는 재귀 검색 기능을 설계하고 있습니다. 뭔가가 일정 확률확률 단계를 취하는 방법?

Node Search(Node start) 
{//first, calculate temperature. count will keep timestep 
    count++; 
    double temperature = 1000 * (Math.Pow(.995,count));//CALCULATES TEMP 

    for (int i = 0; i < start.state.Length; i++) 
    { 
     string temp = StateReturn(start.state, i); 
     if (temp.Length > 1 && temp != start.state 
      &&visited.Contains(temp) == false) 
     { 
      list.Add(new Node(start, temp)); 
      visited.Add(temp); 
     } 
    } 
    //add all relevant nodes to list. 
    Random gen = new Random(); 
    int rand = gen.Next(list.Count);//think this should work 
    //random number has been taken. now just to pull rand node from list 
    Node next = list.ElementAt(rand); 
    list.RemoveAt(rand); 
    double E = -(next.wrongNum - start.wrongNum); //we want less wrong 
    // if next has 
    if (E> 0) 
    { 
     //standard recursion 

    } 
    else //recurse with probability e^(E/t) 
    { 

    } 
} 
+1

당신이 의미하는 바를 "확률 e^(E/t)"라고 기술해야합니다. 재귀 확률이 e^(E/t)에서 1이되어야한다고 말하고 있습니까? –

+0

@Spencer 아니요, 실제로는 분명해야합니다. 적어도 확률 이론에서는 표준 표기법입니다. 재사용의 확률 * P *는 –

+0

@SpencerRuport : Konrad의 진술을 명확히하기 위해 : 누군가가 "확률 p를 가지고"라고 말하면, p는 0과 하나는 0이 아닌 기회, 1은 확실, 0.25는 하나에 4 등입니다. –

답변

8

내가, 특정 조건 하에서, 일반적으로 재귀 재귀 검색 기능을 설계하고에 따라 실행하는 방법을 알아낼 수 없기 때문에 모든 코드는 재귀 단계를 제외하고 완료 다른 조건 하에서는 확률 e^(E/온도)로 재귀해야합니다. 재귀 단계를 제외하고 모든 코드는 특정 확률에 따라 무언가를 실행하는 방법을 알아낼 수 없기 때문에 완료되었습니다.

좀 더 일반적인 질문을 간단하게 만들어 보겠습니다.

나는 확률 p (0 <= p <= 1) 확률 1 - p와 뭔가 다른 하나의 일을하는 함수를 설계하고있다. 나는 어떤 확률에 따라 무언가를 만드는 법을 이해할 수 없다.

0과 1 사이의 임의의 숫자를 선택하십시오.

if (result <= p) 
    DoSomething(); 
else 
    DoSomethingElse(); 

DoSomething()이 확률 p으로 수행되며, DoSomethingElse()이 이루어집니다 : 당신은 이미 당신의 선택을, 그래서 그냥

double result = gen.NextDouble(); // Produce a random double between zero and one. 

를 호출하고 지금 당신이 사용할 수, 변수 gen에서 Random 개체가 확률은 1 - p입니다.

의미가 있습니까?