은행가 알고리즘은 교착 상태가 발생하지 않고 리소스에 대한 모든 요청을 충족시킬 수 있는지를 결정하는 데 사용됩니다.은행가 알고리즘 계산 시간 복잡도
m은 각 자원 타입 보류 요청을 정의
n은
필요 M 사이즈 * n의 배열 인 프로세스의 총 개수 자원 유형의 총 개수이다. 예 : NEEDij = 2는 프로세스 i가 리소스 2 개 항목을 요청하고 있음을 나타냅니다.
알고리즘은 아래에 주어진다 :
BOOLEAN function SAFESTATE is -- Determines if current state is safe
{ NOCHANGE : boolean;
WORK : array[1..m] of INTEGER = AVAILABLE;
FINISH : array[1..n] of boolean = [false, ..,false];
I : integer;
repeat
NOCHANGE = TRUE;
for I = 1 to N do
if ((not FINISH[i]) and
NEEDi <= WORK) then {
WORK = WORK + ALLOCATION_i;
FINISH[i] = true;
NOCHANGE = false;
}
until NOCHANGE;
return (FINISH == (true, .., true));
}
질문이다 어떻게 시간 복잡도 0 (N *의 n 개의 *의 m)? 더 구체적으로, m 항은 다항식을 어떻게 입력합니까? 그것은 길이 m의 벡터에 대해 원소 별 비교를해야하기 때문입니까?
방금 삭제 한 답변에 대한 귀하의 의견과 함께이 코드에서 의미하는 것이 무엇인지 분명하지 않습니다. NEEDi, ALLOCATION_i는 무엇이며 WORK는 요소별로 또는 요소별로 할당되는 방법은 무엇입니까? 이 코드의 출처는 어디입니까? – sharptooth