하스켈로 개미노트 드릴게요.

9325 단어 Haskelltech
저번의 후속.
그러나 2-5의 도표로 날아가면 가장 작은 전역 트리 문제(플린법)가 생긴다.
냉정하게 생각하면 빠른 프로그램을 만들려면 배열이 있어야 한다!
지난번에는'하스켈로 아레이와 루프를 쓰기 시작하면 질 것 같다'는 글이 적힌 자리에서 머리말을 철회했다!
Prinm Path Array와 Loop을 모두 사용해야 하기 때문입니다.
하스켈 개미본(초급편) - 도표.
-- プリム法
prim :: Int -> Int -> Int -> [(Int, Int, Int)] -> Int
prim n m start es = runST $ do
    used <- newArray (0, n - 1) False :: ST s (STArray s Int Bool)
    writeArray used start True
    let ss = fmap (\(t, c) -> (c, t)) (g ! start)
    go 0 used (foldr push Empty ss)
  where
    g = buildGList (0, n - 1) [(a, (b, c)) | (a, b, c) <- es]
    go !k used que
        | Just ((c, t), q) <- pop que = do
            usedt <- readArray used t
            if usedt
                then go k used q
                else do
                    let ss = fmap (\(t, c) -> (c, t)) (g ! t)
                    let q' = foldr push q ss
                    writeArray used t True
                    go (k + c) used q'
        | otherwise = return k
방향성으로 다음과 같은 3가지가 있는데 어떡하지.
  • 속도를 대가로 하지만 Aray와 Loop을 사용하지 않는 알고리즘을 고려한다.
    (이렇게 되면 수행이 될 것 같다.)
  • 하스켈의 아레이도 루프 수행을 한다.
    (저는 Haskeller가 되는 것이 올바른 길이라고 생각합니다.)
  • Haskell.
    스케줄러: 항상 이거. 현실해석. 타협의 산물. 인생은 짧다. 하스켈이 되고 싶어? 경보 전문가가 하고 싶어?
  • 하스켈을 잘해라..
    프로그램 뇌의 Haskell - 빠른 정렬
    Darside of the Haskell- 부작용 빠른 정렬
    참고로 Prem법에서 아래의 영상은 비교적 이해하기 쉽다.
    그리고 다음 알고리즘에서 아래의 영상은 비교적 이해하기 쉽다.

    좋은 웹페이지 즐겨찾기