ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1", { "toot": "http://joinmastodon.org/ns#", "misskey": "https://misskey-hub.net/ns#", "fedibird": "http://fedibird.com/ns#", "sensitive": "as:sensitive", "Emoji": "toot:Emoji", "Hashtag": "as:Hashtag", "quoteUrl": "as:quoteUrl", "_misskey_quote": "misskey:_misskey_quote", "quoteUri": "fedibird:quoteUri", "emojiReactions": { "@id": "fedibird:emojiReactions", "@type": "@id" } } ], "id": "https://hackers.pub/ap/articles/01977223-28cf-7f5f-bd07-954d0177736f", "type": "Article", "attributedTo": "https://hackers.pub/ap/actors/01975d9a-b963-7ae9-9d34-69f16006a6a3", "cc": "https://hackers.pub/ap/actors/01975d9a-b963-7ae9-9d34-69f16006a6a3/followers", "content": "<nav><ul><li lang=\"en\">English (영어): <a hreflang=\"en\" href=\"https://hackers.pub/@hyaline/2025/ri-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A0%81%EC%9A%A9-%EC%9E%91%EC%97%85%EC%A4%91-%EC%9E%A1%EB%8B%B4/en\">Chatting While Working on RI Algorithm Implementation</a></li>\n</ul></nav>\n<hr>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Subgraph_isomorphism_problem\">Subgraph isomorphism 문제</a>는 끔찍한 바닥.</li>\n<li><a href=\"https://www.sciencedirect.com/science/article/abs/pii/S0167865518302733\">이런거 보면</a> &quot;실험에 556일 걸렸어요!&quot; 하는 경우도 있고-_- 논문들 보면 &quot;케이스별로 타임 리밋을 10일 걸어놓고 돌렸어요&quot; 같은 경우들도 많은 와중에.</li>\n<li>만들고 있던 플러그인의 완성 직전에, 스스로 만들고 있던 검색 알고리즘이 느리다는 점에 화가나서</li>\n<li>예전에 읽다 포기한(...) 논문들을 찬찬히 다시 보니까</li>\n<li>내가 만든 거랑 상당히 비슷한데(...수렴진화), 그 중 절반은 맞았고 절반만 좀 비효율적..인데 차이는 이리 많이 나는 것에 화가나서.</li>\n<li>논문들 중 코드가 공개되어 있고 괜찮아 보이는 <a href=\"https://github.com/InfOmics/RI\">RI</a> 이런 걸 가져다가 적용시키기로 했고</li>\n<li>며칠 동안 접붙이는 부분을 만들어서, 방금 돌려보는데 성공.</li>\n<li>엄청 빠르네요. 신나요.</li>\n<li>근데 역시 &quot;이 정도면 계산에 몇 달 걸리겠지?&quot;싶었던 worst case는 돌려보니 끝나질 않음 하하 ' -';</li>\n<li>참고로 저 아이의 가장 최신(?) 버전으로 보이는 것은 이것: <a href=\"https://github.com/vbonnici/ArcMatch\">ArcMatch</a>\n이고, 논문은 <a href=\"https://link.springer.com/article/10.1007/s10618-024-01061-8\">여기</a>\n<ul>\n<li>VF3 도 후보에 넣었었는데, monomorphism (non-induced subgraph isomorphism) 을 체크하려면 좀 수정이 필요한 것 같아서 피하게 되었답니다 ' -' 익숙해지면 위의 ArcMatch 로 옮겨탈까 싶기도 했고, 무엇보다 확장성 면에서 ArcMatch 이 좀 더 나아보였음.</li>\n</ul>\n</li>\n<li>까지는 블스에도 썼던 이야기인데 조금 업데이트.</li>\n<li>알고리즘과 코드를 다 이해하지 못해도, 소스만 낼름 가져와서 쓰면 되겠지? 라고 나이브하게 생각했으나,</li>\n<li>에디터의 사정 혹은 플러그인의 설계 의도에 따라, 검색하는 와중에, &quot;그 노드는 아닌 것 같다. 앞으로 거기는 건드리지 마&quot;를 하려면... 아하하.</li>\n<li><strong>전부 다 이해해야 했던 것입니다.</strong> <s>아니 애초에 이건 심장부의 기능인데 이해를 하지 않고 가져다 쓰려고 했던 자신이 매우 나쁘게 느껴져서 많이 부끄럽...다기보다 무의식적으로 결국 다 이해하고 쓰게 될 거라고 예상하고 있었기도했고...캡슐화라는 건 일할 때 컨텍스트 버퍼에서 잠시 잊어도 된다는 거지 사용할 때 몰라도 된다고 하는 건 새빨간 거짓말이야 그런 건 이 바닥에 없어!</s></li>\n<li>2일을 사용해서 논문을 차근차근 읽었고 이해 완료.</li>\n<li>하지만 소스 코드에서 이해가 안되는 부분은 논문에서 다루지 않고 있었다는 것이 충격.</li>\n<li>게다가 코드가 어떤 모양새냐면</li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:light-dark(#ffffff, #121212); --shiki-dark-bg:#121212; color:light-dark(#393a34, #dbd7caee); --shiki-dark:#dbd7caee;\"><code><span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> psi </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\"> 0</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> sip1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">!=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t//steps++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\tif</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">psi </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">&gt;=</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tmatched</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">solution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\"> false</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">\t\t\t}</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\tcandidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">++</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> &#x3C;</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidatesSize</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t\t//triedcouples++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidates</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">][</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]];</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tsolution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span></code></pre>\n<p><s>psi, si, ci, sip1... 다른 곳엔 ii 같은 것도 있음</s>~</p>\n<ul>\n<li>결국 <a href=\"https://www.jetbrains.com/rider/\">Rider</a> 에 붙어있는 LLM 기능을 사용해서 코드 설명을 듣고 몇 시간동안 낑낑대면서 이해. 이제 디버깅 걸어서 내가 이해한게 진짜로 맞나 체크할 차례에요. LLM이 나에게 거짓말을 한 부분도 있을테고.</li>\n<li>재귀 없이, 배열들과 배열들에 대한 포인터를 기반으로 트리 순회하는 걸 태어나서 처음 봤는데, 머리가 깨질듯이 헷갈리지만 굉장한 흑마술을 본 것 같아 즐겁기도 합니다.\n<ul>\n<li>관련해서 검색하다 찾은, 도움이 좀 된 글: <a href=\"http://plasmasturm.org/log/453/\">Tree traversal without recursion: the tree as a state machine</a></li>\n</ul>\n</li>\n<li>하지만, 역시 제일 즐거운 건 <a href=\"https://x.com/ladyofsigil/status/1933537174605214220\">이런 점</a>입니다. 다수의 사람들이 오랜 시간 동안 노력해서 만든 결과물을, <s>하루까지는 아니었지만</s> 어쨌든 단시간 안에 홀라당 먹는다는 느낌이 너무 달콤한 것이어요. 사실 이 말을 어렸을 때 공부에 힘겨워하던 자신에게 들려주면 좋아했을텐데 싶기도.</li>\n</ul>\n<p>Markdown 사용 가능하니까 정말 좋네요.</p>\n<p>실험용 케이스 만들어서 디버깅 거는 걸 <strong>시작하는 게 귀찮아서</strong> 이러고 있습니다. 이제 일해야지' ㅅ'</p>\n", "contentMap": { "ko": "<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Subgraph_isomorphism_problem\">Subgraph isomorphism 문제</a>는 끔찍한 바닥.</li>\n<li><a href=\"https://www.sciencedirect.com/science/article/abs/pii/S0167865518302733\">이런거 보면</a> &quot;실험에 556일 걸렸어요!&quot; 하는 경우도 있고-_- 논문들 보면 &quot;케이스별로 타임 리밋을 10일 걸어놓고 돌렸어요&quot; 같은 경우들도 많은 와중에.</li>\n<li>만들고 있던 플러그인의 완성 직전에, 스스로 만들고 있던 검색 알고리즘이 느리다는 점에 화가나서</li>\n<li>예전에 읽다 포기한(...) 논문들을 찬찬히 다시 보니까</li>\n<li>내가 만든 거랑 상당히 비슷한데(...수렴진화), 그 중 절반은 맞았고 절반만 좀 비효율적..인데 차이는 이리 많이 나는 것에 화가나서.</li>\n<li>논문들 중 코드가 공개되어 있고 괜찮아 보이는 <a href=\"https://github.com/InfOmics/RI\">RI</a> 이런 걸 가져다가 적용시키기로 했고</li>\n<li>며칠 동안 접붙이는 부분을 만들어서, 방금 돌려보는데 성공.</li>\n<li>엄청 빠르네요. 신나요.</li>\n<li>근데 역시 &quot;이 정도면 계산에 몇 달 걸리겠지?&quot;싶었던 worst case는 돌려보니 끝나질 않음 하하 ' -';</li>\n<li>참고로 저 아이의 가장 최신(?) 버전으로 보이는 것은 이것: <a href=\"https://github.com/vbonnici/ArcMatch\">ArcMatch</a>\n이고, 논문은 <a href=\"https://link.springer.com/article/10.1007/s10618-024-01061-8\">여기</a>\n<ul>\n<li>VF3 도 후보에 넣었었는데, monomorphism (non-induced subgraph isomorphism) 을 체크하려면 좀 수정이 필요한 것 같아서 피하게 되었답니다 ' -' 익숙해지면 위의 ArcMatch 로 옮겨탈까 싶기도 했고, 무엇보다 확장성 면에서 ArcMatch 이 좀 더 나아보였음.</li>\n</ul>\n</li>\n<li>까지는 블스에도 썼던 이야기인데 조금 업데이트.</li>\n<li>알고리즘과 코드를 다 이해하지 못해도, 소스만 낼름 가져와서 쓰면 되겠지? 라고 나이브하게 생각했으나,</li>\n<li>에디터의 사정 혹은 플러그인의 설계 의도에 따라, 검색하는 와중에, &quot;그 노드는 아닌 것 같다. 앞으로 거기는 건드리지 마&quot;를 하려면... 아하하.</li>\n<li><strong>전부 다 이해해야 했던 것입니다.</strong> <s>아니 애초에 이건 심장부의 기능인데 이해를 하지 않고 가져다 쓰려고 했던 자신이 매우 나쁘게 느껴져서 많이 부끄럽...다기보다 무의식적으로 결국 다 이해하고 쓰게 될 거라고 예상하고 있었기도했고...캡슐화라는 건 일할 때 컨텍스트 버퍼에서 잠시 잊어도 된다는 거지 사용할 때 몰라도 된다고 하는 건 새빨간 거짓말이야 그런 건 이 바닥에 없어!</s></li>\n<li>2일을 사용해서 논문을 차근차근 읽었고 이해 완료.</li>\n<li>하지만 소스 코드에서 이해가 안되는 부분은 논문에서 다루지 않고 있었다는 것이 충격.</li>\n<li>게다가 코드가 어떤 모양새냐면</li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:light-dark(#ffffff, #121212); --shiki-dark-bg:#121212; color:light-dark(#393a34, #dbd7caee); --shiki-dark:#dbd7caee;\"><code><span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> psi </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\"> 0</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> sip1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">!=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t//steps++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\tif</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">psi </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">&gt;=</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tmatched</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">solution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\"> false</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">\t\t\t}</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\tcandidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">++</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> &#x3C;</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidatesSize</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t\t//triedcouples++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidates</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">][</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]];</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tsolution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span></code></pre>\n<p><s>psi, si, ci, sip1... 다른 곳엔 ii 같은 것도 있음</s>~</p>\n<ul>\n<li>결국 <a href=\"https://www.jetbrains.com/rider/\">Rider</a> 에 붙어있는 LLM 기능을 사용해서 코드 설명을 듣고 몇 시간동안 낑낑대면서 이해. 이제 디버깅 걸어서 내가 이해한게 진짜로 맞나 체크할 차례에요. LLM이 나에게 거짓말을 한 부분도 있을테고.</li>\n<li>재귀 없이, 배열들과 배열들에 대한 포인터를 기반으로 트리 순회하는 걸 태어나서 처음 봤는데, 머리가 깨질듯이 헷갈리지만 굉장한 흑마술을 본 것 같아 즐겁기도 합니다.\n<ul>\n<li>관련해서 검색하다 찾은, 도움이 좀 된 글: <a href=\"http://plasmasturm.org/log/453/\">Tree traversal without recursion: the tree as a state machine</a></li>\n</ul>\n</li>\n<li>하지만, 역시 제일 즐거운 건 <a href=\"https://x.com/ladyofsigil/status/1933537174605214220\">이런 점</a>입니다. 다수의 사람들이 오랜 시간 동안 노력해서 만든 결과물을, <s>하루까지는 아니었지만</s> 어쨌든 단시간 안에 홀라당 먹는다는 느낌이 너무 달콤한 것이어요. 사실 이 말을 어렸을 때 공부에 힘겨워하던 자신에게 들려주면 좋아했을텐데 싶기도.</li>\n</ul>\n<p>Markdown 사용 가능하니까 정말 좋네요.</p>\n<p>실험용 케이스 만들어서 디버깅 거는 걸 <strong>시작하는 게 귀찮아서</strong> 이러고 있습니다. 이제 일해야지' ㅅ'</p>\n", "en": "<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Subgraph_isomorphism_problem\">Subgraph isomorphism problem</a> is a terrible rabbit hole.</li>\n<li><a href=\"https://www.sciencedirect.com/science/article/abs/pii/S0167865518302733\">Looking at papers like this</a> where they say &quot;our experiment took 556 days!&quot; and many papers mention &quot;we set a time limit of 10 days per case&quot; and so on.</li>\n<li>I was getting frustrated with the slow search algorithm right before completing the plugin I was developing</li>\n<li>So I carefully revisited papers I had previously given up on reading(...)</li>\n<li>I realized that half of what I built was correct and half was just inefficient... but the performance difference was so huge that it made me angry.</li>\n<li>I decided to adopt and implement <a href=\"https://github.com/InfOmics/RI\">RI</a>, which seemed decent among the papers with publicly available code</li>\n<li>After spending a few days creating the integration part, I just ran it successfully.</li>\n<li>It's incredibly fast. I'm excited.</li>\n<li>But of course, the worst cases that I thought &quot;this would probably take months to calculate&quot; still don't finish running, haha ' -';</li>\n<li>By the way, what appears to be the most recent(?) version of that algorithm is this: <a href=\"https://github.com/vbonnici/ArcMatch\">ArcMatch</a>\nand the paper is <a href=\"https://link.springer.com/article/10.1007/s10618-024-01061-8\">here</a>\n<ul>\n<li>I had also considered VF3 as a candidate, but it seemed to require some modifications to check monomorphism (non-induced subgraph isomorphism), so I avoided it ' -' I was thinking about switching to ArcMatch once I got more familiar, and above all, ArcMatch seemed better in terms of scalability.</li>\n</ul>\n</li>\n<li>Up to here was what I wrote on BlueSky, but here's a small update.</li>\n<li>I naively thought that I could just grab the source code and use it without fully understanding the algorithm and code.</li>\n<li>But if I wanted to tell the editor &quot;that node doesn't look right, don't touch it anymore&quot; based on the editor's circumstances or the plugin's design intentions... ahaha.</li>\n<li><strong>I had to understand everything completely.</strong> <s>Actually, this is a core functionality, so I feel very ashamed for trying to use it without understanding, though unconsciously I was probably expecting that I'd end up understanding everything anyway... encapsulation means you can temporarily forget something in your context buffer while working, not that you don't need to understand what you're using - that's a blatant lie! There's no such thing in this field!</s></li>\n<li>I spent 2 days carefully reading the paper and finally understood it.</li>\n<li>But shockingly, the paper didn't cover the parts of the source code that I couldn't understand.</li>\n<li>And the code looks like this:</li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:light-dark(#ffffff, #121212); --shiki-dark-bg:#121212; color:light-dark(#393a34, #dbd7caee); --shiki-dark:#dbd7caee;\"><code><span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> psi </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\"> 0</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">\t\tint</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> sip1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">!=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t//steps++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\tif</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">psi </span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">&gt;=</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tmatched</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">solution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\"> false</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">\t\t\t}</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> -</span><span style=\"color:light-dark(#2F798A, #4C9A91); --shiki-dark:#4C9A91;\">1</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\tcandidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\">++</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#1E754F, #4D9375); --shiki-dark:#4D9375;\">\t\t\twhile</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">(</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#AB5959, #CB7676); --shiki-dark:#CB7676;\"> &#x3C;</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidatesSize</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]){</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#A0ADA0, #758575DD); --shiki-dark:#758575DD;\">\t\t\t\t//triedcouples++;</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">\t\t\t\tci </span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">=</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\"> candidates</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">][</span><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">candidatesIT</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]];</span></span>\n<span class=\"line\"><span style=\"color:light-dark(#B07D48, #BD976A); --shiki-dark:#BD976A;\">\t\t\t\tsolution</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">[</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\">si</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">]</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\"> =</span><span style=\"color:light-dark(#393A34, #DBD7CAEE); --shiki-dark:#DBD7CAEE;\"> ci</span><span style=\"color:light-dark(#999999, #666666); --shiki-dark:#666666;\">;</span></span></code></pre>\n<p><s>psi, si, ci, sip1... and in other places there are things like ii too</s></p>\n<ul>\n<li>I ended up using the LLM feature in <a href=\"https://www.jetbrains.com/rider/\">Rider</a> to get code explanations and spent hours struggling to understand. Now it's time to set up debugging to check if my understanding is actually correct. The LLM probably lied to me in some parts.</li>\n<li>It's the first time in my life seeing tree traversal without recursion, based on arrays and pointers to arrays. It's mind-bogglingly confusing, but I'm also enjoying witnessing this kind of black magic.\n<ul>\n<li>A helpful article I found while searching about this: <a href=\"http://plasmasturm.org/log/453/\">Tree traversal without recursion: the tree as a state machine</a></li>\n</ul>\n</li>\n<li>But the most enjoyable part is <a href=\"https://x.com/ladyofsigil/status/1933537174605214220\">this aspect</a>. The feeling of consuming in a short time <s>not quite a day, but still</s> the results that many people worked hard on for a long time is so sweet. I wish I could have told this to my younger self who struggled with studying.</li>\n</ul>\n<p>It's really nice that Markdown is available here.</p>\n<p>I'm procrastinating on <strong>starting</strong> to create test cases and setting up debugging. Now I should get back to work ' ㅅ'</p>\n" }, "name": "RI 알고리즘 적용 작업중 잡담", "nameMap": { "ko": "RI 알고리즘 적용 작업중 잡담", "en": "Chatting While Working on RI Algorithm Implementation" }, "published": "2025-06-15T05:49:56.309Z", "source": { "type": "as:Source", "content": "- [Subgraph isomorphism 문제](https://en.wikipedia.org/wiki/Subgraph_isomorphism_problem)는 끔찍한 바닥.\n- [이런거 보면](https://www.sciencedirect.com/science/article/abs/pii/S0167865518302733) \"실험에 556일 걸렸어요!\" 하는 경우도 있고-_- 논문들 보면 \"케이스별로 타임 리밋을 10일 걸어놓고 돌렸어요\" 같은 경우들도 많은 와중에.\n- 만들고 있던 플러그인의 완성 직전에, 스스로 만들고 있던 검색 알고리즘이 느리다는 점에 화가나서\n- 예전에 읽다 포기한(...) 논문들을 찬찬히 다시 보니까\n- 내가 만든 거랑 상당히 비슷한데(...수렴진화), 그 중 절반은 맞았고 절반만 좀 비효율적..인데 차이는 이리 많이 나는 것에 화가나서.\n- 논문들 중 코드가 공개되어 있고 괜찮아 보이는 [RI](https://github.com/InfOmics/RI) 이런 걸 가져다가 적용시키기로 했고\n- 며칠 동안 접붙이는 부분을 만들어서, 방금 돌려보는데 성공.\n- 엄청 빠르네요. 신나요.\n- 근데 역시 \"이 정도면 계산에 몇 달 걸리겠지?\"싶었던 worst case는 돌려보니 끝나질 않음 하하 ' -';\n- 참고로 저 아이의 가장 최신(?) 버전으로 보이는 것은 이것: [ArcMatch](https://github.com/vbonnici/ArcMatch)\n 이고, 논문은 [여기](https://link.springer.com/article/10.1007/s10618-024-01061-8)\n - VF3 도 후보에 넣었었는데, monomorphism (non-induced subgraph isomorphism) 을 체크하려면 좀 수정이 필요한 것 같아서 피하게 되었답니다 ' -' 익숙해지면 위의 ArcMatch 로 옮겨탈까 싶기도 했고, 무엇보다 확장성 면에서 ArcMatch 이 좀 더 나아보였음.\n- 까지는 블스에도 썼던 이야기인데 조금 업데이트. \n- 알고리즘과 코드를 다 이해하지 못해도, 소스만 낼름 가져와서 쓰면 되겠지? 라고 나이브하게 생각했으나, \n- 에디터의 사정 혹은 플러그인의 설계 의도에 따라, 검색하는 와중에, \"그 노드는 아닌 것 같다. 앞으로 거기는 건드리지 마\"를 하려면... 아하하.\n- **전부 다 이해해야 했던 것입니다.** ~~아니 애초에 이건 심장부의 기능인데 이해를 하지 않고 가져다 쓰려고 했던 자신이 매우 나쁘게 느껴져서 많이 부끄럽...다기보다 무의식적으로 결국 다 이해하고 쓰게 될 거라고 예상하고 있었기도했고...캡슐화라는 건 일할 때 컨텍스트 버퍼에서 잠시 잊어도 된다는 거지 사용할 때 몰라도 된다고 하는 건 새빨간 거짓말이야 그런 건 이 바닥에 없어!~~\n- 2일을 사용해서 논문을 차근차근 읽었고 이해 완료. \n- 하지만 소스 코드에서 이해가 안되는 부분은 논문에서 다루지 않고 있었다는 것이 충격.\n- 게다가 코드가 어떤 모양새냐면\n```cpp\n\t\tint psi = -1;\n\t\tint si = 0;\n\t\tint ci = -1;\n\t\tint sip1;\n\t\twhile(si != -1){\n\t\t\t//steps++;\n\t\t\tif(psi >= si){\n\t\t\t\tmatched[solution[si]] = false;\n\t\t\t}\n\t\t\tci = -1;\n\t\t\tcandidatesIT[si]++;\n\t\t\twhile(candidatesIT[si] < candidatesSize[si]){\n\t\t\t\t//triedcouples++;\n\t\t\t\tci = candidates[si][candidatesIT[si]];\n\t\t\t\tsolution[si] = ci;\n```\n~~psi, si, ci, sip1... 다른 곳엔 ii 같은 것도 있음~~~\n- 결국 [Rider](https://www.jetbrains.com/rider/) 에 붙어있는 LLM 기능을 사용해서 코드 설명을 듣고 몇 시간동안 낑낑대면서 이해. 이제 디버깅 걸어서 내가 이해한게 진짜로 맞나 체크할 차례에요. LLM이 나에게 거짓말을 한 부분도 있을테고.\n- 재귀 없이, 배열들과 배열들에 대한 포인터를 기반으로 트리 순회하는 걸 태어나서 처음 봤는데, 머리가 깨질듯이 헷갈리지만 굉장한 흑마술을 본 것 같아 즐겁기도 합니다.\n - 관련해서 검색하다 찾은, 도움이 좀 된 글: [Tree traversal without recursion: the tree as a state machine](http://plasmasturm.org/log/453/)\n- 하지만, 역시 제일 즐거운 건 [이런 점](https://x.com/ladyofsigil/status/1933537174605214220)입니다. 다수의 사람들이 오랜 시간 동안 노력해서 만든 결과물을, ~~하루까지는 아니었지만~~ 어쨌든 단시간 안에 홀라당 먹는다는 느낌이 너무 달콤한 것이어요. 사실 이 말을 어렸을 때 공부에 힘겨워하던 자신에게 들려주면 좋아했을텐데 싶기도.\n\nMarkdown 사용 가능하니까 정말 좋네요.\n\n실험용 케이스 만들어서 디버깅 거는 걸 **시작하는 게 귀찮아서** 이러고 있습니다. 이제 일해야지' ㅅ'\n\n\n", "mediaType": "text/markdown" }, "tag": [ { "type": "Hashtag", "href": "https://hackers.pub/tags/SubgraphIsomorphism", "name": "#SubgraphIsomorphism" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/GameDev", "name": "#GameDev" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/PluginDev", "name": "#PluginDev" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/UnrealEngine", "name": "#UnrealEngine" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/IndieDev", "name": "#IndieDev" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/IndieGameDev", "name": "#IndieGameDev" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/cpp", "name": "#cpp" }, { "type": "Hashtag", "href": "https://hackers.pub/tags/algorithm", "name": "#algorithm" } ], "to": "as:Public", "updated": "2025-06-15T06:00:57.953Z", "url": "https://hackers.pub/@hyaline/2025/ri-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A0%81%EC%9A%A9-%EC%9E%91%EC%97%85%EC%A4%91-%EC%9E%A1%EB%8B%B4" }