제72회 · LLM과 함께 배우는 생각그림

코드 다이어그램은 원형 띠로 집단 사이 연결량을 어떻게 비교할까?

원의 둘레에서는 집단 총량을 읽고, 원 안의 리본에서는 어느 집단이 어느 집단과 얼마나 연결됐는지 확인합니다.

네 집단이 서로 주고받은 요청을 원 안에 놓는다

검색팀, 생성팀, 검증팀, 사람 검토팀이 한 주 동안 서로 넘긴 작업 수를 보고 싶다. 코드(Chord) 다이어그램은 각 집단을 원 둘레의 원호로 배치하고, 집단 사이의 연결량을 원 안쪽 리본으로 잇는다. 둘레의 길이는 집단의 합계, 리본 끝의 너비는 두 집단 사이 양을 나타낸다.

D3의 chord 레이아웃은 정사각 행렬을 입력받아 원호 집단과 리본 관계를 계산한다. 아래 숫자는 읽기 연습용 교육 자료다. 실제 팀이나 모델의 작업 로그가 아니다. 컴퓨터 ‘코드(code)’가 아니라 원의 두 점을 잇는 현을 뜻하는 영어 chord에서 온 이름임을 구분한다.

생각그림 1 · 네 집단 사이의 기본 코드 다이어그램

도표를 좌우로 움직여 전체를 확인하세요.

검색 36생성 31검증 22사람 19
바깥 원호는 집단 총량, 안쪽 리본은 집단 쌍의 연결량입니다. 원호의 이웃은 업무 순서를 뜻하지 않습니다.

행렬·원호·리본·방향을 따로 읽는다

입력 행렬의 행은 출발 집단, 열은 도착 집단으로 정한다. 셀 M[i][j]는 i에서 j로 이동한 양이다. 원호 길이는 해당 집단과 연결된 양의 합에 비례한다. 리본은 source와 target 끝을 가지며 각 끝의 너비가 행렬값을 반영한다. 방향이 없는 그림에서는 한 리본이 두 값을 함께 나타낼 수 있다.

색은 보통 출발 집단이나 집단 범주를 따른다. 화살표 모양 리본을 쓰지 않는다면 방향을 색만으로 추측하게 하지 않는다. 리본을 선택했을 때 ‘검색→검증 14, 검증→검색 6’처럼 양방향 값을 모두 표시한다. 원호 사이 여백은 구분을 위한 것이지 실제 거리나 단절이 아니다.

생각그림 2 · 코드 문법과 행렬 대응
도표 요소행렬 요소뜻
원호 i행/열 i의 합집단 총 연결량
리본 i–jM[i][j], M[j][i]집단 쌍의 연결
리본 끝 너비각 방향 값연결량
화살촉방향 표현 선택출발→도착
원호 순서정렬 설정공간적 거리 아님
도표의 모든 원호와 리본은 정사각 행렬의 행·열·셀로 되돌릴 수 있어야 합니다.

비대칭 행렬은 두 방향을 따로 보존한다

검색팀이 검증팀에 14건을 보내고 검증팀이 검색팀에 6건을 돌려보냈다면 연결 총량 20만 표시해서는 재작업 방향을 잃는다. 행렬의 M[검색][검증]=14와 M[검증][검색]=6을 따로 저장한다. 방향 리본, 두 색 끝, 화살표 또는 상세 표로 구분한다.

무방향 협업 건수를 그린다면 행렬을 대칭으로 만들되 같은 사건을 M[i][j]와 M[j][i]에 둘 다 넣어 총량을 두 배 세지 않도록 합계 정의를 밝힌다. directed와 undirected를 섞지 않는다. 원호 합계가 발신합인지 수신합인지, 둘의 합인지 캡션에 쓴다.

생각그림 3 · 방향별 행렬 예시
출발\도착검색생성검증사람
검색318145
생성94228
검증611216
사람47131
대각선은 자기연결, 행은 발신, 열은 수신입니다. 비대칭 셀은 두 방향의 양이 다름을 보여 줍니다.

대각선의 자기연결도 의미를 정한다

M[i][i]는 같은 집단 안에서 다시 전달된 작업, 내부 재시도, 자기 참조를 나타낼 수 있다. 검색팀 대각선 3이 단순히 같은 팀 안의 담당자 변경인지 자동 재시도인지 정의해야 한다. 의미가 없는 대각선은 0으로 두고, 실제 자기연결은 루프 리본이나 원호 옆 값으로 표시한다.

자기연결이 매우 크면 다른 집단 사이 리본이 눌려 보인다. 내부 처리와 부서 간 이동을 별도 패널로 나누거나 필터를 제공하되 원래 총량은 표에 남긴다. 대각선을 조용히 삭제하면 원호 합계가 행렬 합과 달라진다. 제외 규칙과 제외량을 제목이나 주석에 쓴다.

생각그림 4 · 자기연결 처리 선택
대각선 0자기연결을 세지 않음
대각선 값내부 이동 정의 필요
별도 패널내부 이동이 매우 큼
조용한 삭제원호 합 불일치
표기제외량·규칙 공개
자기연결은 오류가 아니라 정의가 필요한 데이터이며, 제외할 때도 합계를 보존합니다.

집단 순서와 리본 정렬로 교차를 줄인다

원 둘레의 집단 순서는 데이터의 물리적 위치가 아니다. 관련 집단을 가깝게 두면 리본이 짧아지고 교차가 줄지만, 순서를 바꾸면 그림의 인상이 달라진다. 이름순, 업무 흐름순, 총량순 중 하나를 정해 기간별 비교에서 유지한다. 유리한 관계를 강조하려고 매번 재배열하지 않는다.

집단 안의 리본도 값순이나 대상순으로 정렬할 수 있다. 교차를 줄이는 알고리즘은 읽기 편의를 위한 선택이며 연결량을 바꾸지 않는다. 정렬 기준을 기록하고, 강조하려는 집단을 선택하면 다른 리본의 불투명도를 낮춘다. 색만으로 구분하지 않고 테두리와 직접 라벨을 함께 쓴다.

생각그림 5 · 배치가 바꾸는 것과 바꾸지 않는 것
설정바뀌는 것바뀌지 않는 것
집단 순서원호 위치·교차행렬값
리본 정렬겹침 순서연결량
여백시각적 구분합계
강조불투명도원자료
기간 비교고정 권장척도·ID
배치는 가독성을 바꾸지만 연결량을 바꾸지 않습니다. 같은 값이 같은 ID에 남아야 합니다.

생키·네트워크·행렬과 질문이 다르다

생키는 단계 방향이 분명한 흐름과 분배를 왼쪽에서 오른쪽으로 보여 준다. 코드 다이어그램은 동일한 수준의 여러 집단이 서로 주고받는 양을 원 안에 압축한다. 네트워크 그래프는 연결 구조와 중심성을 보여 주지만 링크가 많으면 겹친다. 인접 행렬은 방향과 정확값을 촘촘하게 비교하는 데 유리하다.

집단이 20개를 넘고 거의 모든 쌍이 연결되면 코드의 리본이 머리카락처럼 겹친다. 이때 정렬한 행렬 히트맵이나 상위 연결 표가 낫다. 시간 순서가 핵심이면 코드 여러 장보다 애니메이션 없는 작은 다중 행렬을 쓴다. 원형 배치가 멋져 보인다는 이유로 관계 수를 감추지 않는다.

생각그림 6 · 연결 도표 선택표
질문우선 도표이유
단계별 양 흐름생키방향·분배
집단 간 양코드쌍 연결 압축
연결 구조·중심성네트워크노드–링크 구조
많은 집단의 정확값행렬 히트맵셀 위치·색
시간 변화작은 다중 행렬위치 안정성
집단 수, 밀도, 방향, 시간 비교 과제에 따라 원형 리본이 적절한지 판단합니다.

LLM에는 행렬의 행·열 순서를 고정해 준다

원자료를 출발ID, 도착ID, 값, 단위, 기간으로 제공하고 중복과 자기연결 규칙을 먼저 확인한다. 고정된 집단 목록으로 정사각 행렬을 만들고 행합·열합·전체합을 계산하게 한다. 방향이 있는지, 행이 출발인지, 원호 합계가 무엇인지 출력 사양에 적는다.

모델이 이름이 비슷한 집단을 합치거나 빈 셀을 추정하지 못하게 한다. 렌더링과 함께 원행렬, 상위 연결 표, 집단별 발신·수신 요약을 요구한다. 리본이 너무 많으면 상위 k개만 보여 주되 제외 합계를 별도 표시한다. 실제 로그가 없다면 임의 관계를 만들지 않고 빈 행렬 사양만 반환한다.

생각그림 7 · 관계표에서 코드까지
출발–도착 표
집단 ID 고정
정사각 행렬
행·열 합 검산
코드+행렬 표
코드 다이어그램의 신뢰성은 원 안의 곡선보다 원행렬의 완전성과 정의에서 나옵니다.

잘못된 코드는 방향과 총량을 숨긴다

수정 전 그림은 검색→검증 14와 검증→검색 6을 하나의 20짜리 리본으로 합치고 방향을 설명하지 않았다. 대각선을 삭제했지만 원호 합계는 삭제 전 값을 썼다. 집단별로 다른 너비 척도를 적용하고, 리본 교차를 줄이려고 행렬값 자체를 상위 5개만 남겼으나 제외량을 밝히지 않았다.

수정 후 비대칭 행렬을 그대로 보존하고 방향 리본과 상세 표를 제공했다. 대각선 포함 여부에 맞춰 원호 합계를 다시 계산했다. 모든 원호와 리본에 같은 양 척도를 썼고 제외된 작은 연결의 합계를 집단별로 표시했다. 집단 순서를 고정해 기간 비교가 가능하게 했다.

생각그림 8 · 코드 수정 전후
수정 전양방향을 한 값으로 합침
수정 전대각선·원호 합 불일치
수정 후비대칭 행렬·방향 표기
수정 후공통 척도·제외량 공개
수정 후집단 순서 고정
리본을 단순화해도 방향·자기연결·제외량은 표에서 모두 복원되어야 합니다.

직접 실습은 한 행과 한 열을 함께 읽는다

교육용 행렬에서 검색 행의 합은 3+18+14+5=40으로 검색에서 나간 작업이다. 검색 열의 합은 3+9+6+4=22로 검색이 받은 작업이다. 둘을 합친 62를 원호 길이로 쓴다면 자기연결 3을 두 번 셀지 한 번 셀지 정의해야 한다. 실습에서는 한 셀을 바꾸며 행합과 열합의 변화를 확인한다.

실제 자료에서는 한 작업이 여러 팀을 순차로 거치면 집단 쌍 이동을 이벤트마다 세는지, 작업 하나당 한 번만 세는지 규칙을 정한다. 코드 다이어그램은 경로 순서를 보존하지 않으므로 검색→생성→검증의 순차 경로를 알고 싶다면 생키나 시퀀스 기록을 병행한다. 연결량과 경로는 다른 질문이다.

생각그림 9 · 코드 공개 전 검사
검사검색 예시뜻
행합40검색 발신
열합22검색 수신
대각선3검색 내부
방향쌍14 대 6검색↔검증 비대칭
전체합모든 셀 합집계 규칙 확인
한 집단의 발신과 수신을 분리해 읽으면 원호 하나가 숨긴 방향을 복구할 수 있습니다.

복사해서 쓸 수 있는 LLM 요청문

아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.

다음 집단 간 이동 표를 코드 다이어그램용으로 검산해 줘.
1. 출발ID, 도착ID, 값, 단위, 기간을 확인한다.
2. 고정된 집단 순서로 정사각 행렬을 만들고 행은 출발, 열은 도착으로 둔다.
3. 행합, 열합, 전체합과 대각선 자기연결을 계산한다.
4. M[i][j]와 M[j][i]를 합치지 말고 방향별로 보존한다.
5. 원호 합계가 발신·수신·둘의 합 중 무엇인지 명시한다.
6. 집단·리본 정렬, 색 범례, 작은 연결 제외 기준과 제외량을 기록한다.
7. 원행렬과 상위 연결 표를 도표와 함께 제공한다.
8. 실제 관계가 없으면 빈 셀을 추정하거나 임의 연결을 만들지 않는다.

[이동 표] …
생각그림 10 · 요청문에서 결과와 검토까지
원문 붙이기
도표 목적 명시
추정 금지
문장별 대조
요청문은 도표를 자동으로 진실로 만들지 않습니다. 원문과 결과를 왕복해 확인하는 절차가 핵심입니다.

직접 실습하고 결과를 읽기

이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.

검색 행과 검증→검색 반대 방향을 함께 확인하세요.

자료와 출처

아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.