RI 알고리즘 적용 작업중 잡담

Hyaline @hyaline@hackers.pub

  • Subgraph isomorphism 문제는 끔찍한 바닥.
  • 이런거 보면 "실험에 556일 걸렸어요!" 하는 경우도 있고-_- 논문들 보면 "케이스별로 타임 리밋을 10일 걸어놓고 돌렸어요" 같은 경우들도 많은 와중에.
  • 만들고 있던 플러그인의 완성 직전에, 스스로 만들고 있던 검색 알고리즘이 느리다는 점에 화가나서
  • 예전에 읽다 포기한(...) 논문들을 찬찬히 다시 보니까
  • 내가 만든 거랑 상당히 비슷한데(...수렴진화), 그 중 절반은 맞았고 절반만 좀 비효율적..인데 차이는 이리 많이 나는 것에 화가나서.
  • 논문들 중 코드가 공개되어 있고 괜찮아 보이는 RI 이런 걸 가져다가 적용시키기로 했고
  • 며칠 동안 접붙이는 부분을 만들어서, 방금 돌려보는데 성공.
  • 엄청 빠르네요. 신나요.
  • 근데 역시 "이 정도면 계산에 몇 달 걸리겠지?"싶었던 worst case는 돌려보니 끝나질 않음 하하 ' -';
  • 참고로 저 아이의 가장 최신(?) 버전으로 보이는 것은 이것: ArcMatch 이고, 논문은 여기
    • VF3 도 후보에 넣었었는데, monomorphism (non-induced subgraph isomorphism) 을 체크하려면 좀 수정이 필요한 것 같아서 피하게 되었답니다 ' -' 익숙해지면 위의 ArcMatch 로 옮겨탈까 싶기도 했고, 무엇보다 확장성 면에서 ArcMatch 이 좀 더 나아보였음.
  • 까지는 블스에도 썼던 이야기인데 조금 업데이트.
  • 알고리즘과 코드를 다 이해하지 못해도, 소스만 낼름 가져와서 쓰면 되겠지? 라고 나이브하게 생각했으나,
  • 에디터의 사정 혹은 플러그인의 설계 의도에 따라, 검색하는 와중에, "그 노드는 아닌 것 같다. 앞으로 거기는 건드리지 마"를 하려면... 아하하.
  • 전부 다 이해해야 했던 것입니다. 아니 애초에 이건 심장부의 기능인데 이해를 하지 않고 가져다 쓰려고 했던 자신이 매우 나쁘게 느껴져서 많이 부끄럽...다기보다 무의식적으로 결국 다 이해하고 쓰게 될 거라고 예상하고 있었기도했고...캡슐화라는 건 일할 때 컨텍스트 버퍼에서 잠시 잊어도 된다는 거지 사용할 때 몰라도 된다고 하는 건 새빨간 거짓말이야 그런 건 이 바닥에 없어!
  • 2일을 사용해서 논문을 차근차근 읽었고 이해 완료.
  • 하지만 소스 코드에서 이해가 안되는 부분은 논문에서 다루지 않고 있었다는 것이 충격.
  • 게다가 코드가 어떤 모양새냐면
		int psi = -1;
		int si = 0;
		int ci = -1;
		int sip1;
		while(si != -1){
			//steps++;
			if(psi >= si){
				matched[solution[si]] = false;
			}
			ci = -1;
			candidatesIT[si]++;
			while(candidatesIT[si] < candidatesSize[si]){
				//triedcouples++;
				ci = candidates[si][candidatesIT[si]];
				solution[si] = ci;

psi, si, ci, sip1... 다른 곳엔 ii 같은 것도 있음~

  • 결국 Rider 에 붙어있는 LLM 기능을 사용해서 코드 설명을 듣고 몇 시간동안 낑낑대면서 이해. 이제 디버깅 걸어서 내가 이해한게 진짜로 맞나 체크할 차례에요. LLM이 나에게 거짓말을 한 부분도 있을테고.
  • 재귀 없이, 배열들과 배열들에 대한 포인터를 기반으로 트리 순회하는 걸 태어나서 처음 봤는데, 머리가 깨질듯이 헷갈리지만 굉장한 흑마술을 본 것 같아 즐겁기도 합니다.
  • 하지만, 역시 제일 즐거운 건 이런 점입니다. 다수의 사람들이 오랜 시간 동안 노력해서 만든 결과물을, 하루까지는 아니었지만 어쨌든 단시간 안에 홀라당 먹는다는 느낌이 너무 달콤한 것이어요. 사실 이 말을 어렸을 때 공부에 힘겨워하던 자신에게 들려주면 좋아했을텐데 싶기도.

Markdown 사용 가능하니까 정말 좋네요.

실험용 케이스 만들어서 디버깅 거는 걸 시작하는 게 귀찮아서 이러고 있습니다. 이제 일해야지' ㅅ'

2

2 comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01977223-28cf-7f5f-bd07-954d0177736f on your instance and reply to it.

0

LLM 이 요약해준 글을 읽고 폭소했어요. 여러 논문들과 코드들을 보며 알고리즘들을 검토한 건 맞는데, 그 과정은 본문에 없단다 아가야 ㄲㄲㄲ

0