2010-01-30 7 views
-2

표준 ML에 SCC 알고리즘을 작성해야합니다. 하지만 어떻게해야할지 모르겠다.SML의 강력하게 연결된 구성 요소 (SCC 그래프 알고리즘)

type vertex = int 
type edge = int * int 
type graph = (vertex * vertex list) list 


fun dfs (g: graph) (n: vertex): vertex list = 
    let 
    fun helper (todo: vertex list) (visited: vertex list): vertex list = 
    case todo of 
     [] => [] 
    | h::t => if (List.exists (fn x => x = h) visited) 
       then helper t visited 
       else 
        let 
        val adj = case List.find (fn (n, _) => n = h) g of 
           NONE => raise Fail "incomplete adjacency list" 
           | SOME (_, adj) => adj 
        in 
        h :: (helper (adj @ t) (h::visited)) 
        end 
    in 
    helper [n] [] 
    end 

위의 코드를 컴파일하고 제대로 실행되었습니다
나는 코드를 위해서 사용할 수있는 유형을 다음했다.
SCC에서 dfs가 필요하다는 것을 알고 있기 때문에 이것을 코드에 넣었습니다.
해결책이있는 사람이 있습니까?

+0

무엇이 문제입니까? –

+0

내가 scc ml 코드를 원한다 – JGC

+5

s3nd m3 cod3z 질문은 일반적으로 잘 실행되지 않는다. –

답변

-1

표준 ML (http://www.smlnj.org/sml.html)을 사용하려고합니다.

수업 시간 중에 교사는 SML 코드를 만들 수있는 모델링 도구를 제시했거나 코드를 작성하는 데 필요한 리소스를 추천해야합니다. S/그는 또한 샘플 코드를 제시해야하며 책 (또는 책 뒷면의 CD)에는 SML 코드가 포함되어야합니다.

모델링 도구가 없다고 가정 할 때 다음과 같이 권장합니다. 먼저 선생님이나 서적에서 제공하는 샘플 코드를 참조하고 필요에 가장 유사한 문제를 해결하는 코드를 선택하십시오. 대답 &을 복사하여 답안에 붙여 넣으십시오. 답안의 맨 처음에 출처를 분명하게 인용해야합니다. 그런 다음, smlnj.org의 "문서 및 문학"섹션 (특히 자습서)에서 클래스의 다른 예제, 책의 세부 정보 및 리소스를 사용하여 솔루션을 구현하십시오.

그렇다면 교실에서 논의되지 않았고 책에서 다루지 못했지만 해결할 수없는 걸림돌이있는 경우 TA 나 교사와상의해야합니다. 그 중 한 학생에게 질문을하면 교사는 그 주제가 수업 시간에 명확하게 다루어지지 않고 있음을 알 수 있습니다. 당신이 그들에게 물어 보지 않으면, 그들은 알지 못할 것이며, 나머지 반의 사람들은 주제에 어려움을 겪을 것입니다.

마지막으로 교사와 TA를 사용할 수없고 해결 방법을 모르는 문제가 발생하는 경우 매우 구체적인 질문이 있습니다 (예 : '여기 내 코드가 있습니다. ; 그것은 컴파일되지 않습니다 그리고 왜 "), 그 시점에서 스택 오버플로 물어 봐야 알아낼 수 없습니다.

+1

'질문을 다시 태그하여 "standard-ml"을 표시하는 것이 좋습니다. sml (모두 표준 ml에 관한) 41 개의 질문 태그가 있으며 스택 오버플로에 대한 표준 ml 태그가있는 0 개의 질문이 있습니다. 그래서 분명히 sml이 선호되는 태그입니다. 나는 똑같은 것을 위해 이미 다른 태그가 있다면 새로운 태그를 만드는 것이 좋은 습관이라고 생각하지 않는다. – sepp2k

+0

@ sepp2k : 좋은 지적. 내 답변 업데이트 중 :) – atk

관련 문제