{{위키데이터 속성 추적}}
'''슐츠 방법'''(Schulze method)은 1997년 마커스 슐츠가 개발한 선거 제도이다. 이 방법으로 승자들의 정렬된 목록을 만들어낼 수 있다.

== 예시 ==
후보자가 5명(A, B, C, D, E)이고 투표자가 45명인 예시를 살펴보자.
{| class='wikitable'
!선호순서
!투표자수
|- align='center'
!ACBED
|5
|- align='center'
!ADECB
|5
|- align='center'
!BEDAC
|8
|- align='center'
!CABED
|3
|- align='center'
!CAEBD
|7
|- align='center'
!CBADE
|2
|- align='center'
!DCEBA
|7
|- align='center'
!EBADC
|8
|- align='center'
!계
!45
|}

{| class="wikitable" style="text-align:center"
|+짝 대결 행렬
|-
! !! d[*,A] !! d[*,B] !! d[*,C] !! d[*,D] !! d[*,E]
|-
! d[A,*]
|    || 20 || 26 || 30 || 22
|-
! d[B,*]
| 25 ||    || 16 || 33 || 18
|-
! d[C,*]
| 19 || 29 ||    || 17 || 24
|-
! d[D,*]
| 15 || 12 || 28 ||    || 14
|-
! d[E,*]
| 23 || 27 || 21 || 31 ||    
|}

;짝 대결 그래프
[[파일:Schulze method example1.svg|border|none|300px]]

경로의 '''강도'''(strength)는 가장 약한 고리(=노드)의 강도를 말한다.
다음 표는 후보자 각 쌍에 대해 한 후보자 X에서 다른 후보자 Y로 가는 최강 경로를 보여준다.
이들 최강경로에서 가장 약한 고리는 밑줄로 표시되어 있다.

{| class="wikitable" style="text-align:center"
|+최강경로
|-
! !! → A !! → B !! → C !! → D !! → E
|-
! A →
| || [[파일:Schulze method example1 AB.svg|border|none|150px]] A-(30)-D-<u>(28)</u>-C-(29)-B || [[파일:Schulze method example1 AC.svg|border|none|150px]] A-(30)-D-<u>(28)</u>-C || [[파일:Schulze method example1 AD.svg|border|none|150px]] A-<u>(30)</u>-D || [[파일:Schulze method example1 AE.svg|border|none|150px]] A-(30)-D-(28)-C-<u>(24)</u>-E
|-
! B →
| [[파일:Schulze method example1 BA.svg|border|none|150px]] B-<u>(25)</u>-A || || [[파일:Schulze method example1 BC.svg|border|none|150px]] B-(33)-D-<u>(28)</u>-C || [[파일:Schulze method example1 BD.svg|border|none|150px]] B-<u>(33)</u>-D || [[파일:Schulze method example1 BE.svg|border|none|150px]] B-(33)-D-(28)-C-<u>(24)</u>-E
|-
! C →
| [[파일:Schulze method example1 CA.svg|border|none|150px]] C-(29)-B-<u>(25)</u>-A || [[파일:Schulze method example1 CB.svg|border|none|150px]] C-<u>(29)</u>-B || || [[파일:Schulze method example1 CD.svg|border|none|150px]] C-<u>(29)</u>-B-(33)-D || [[파일:Schulze method example1 CE.svg|border|none|150px]] C-<u>(24)</u>-E
|-
! D →
| [[파일:Schulze method example1 DA.svg|border|none|150px]] D-(28)-C-(29)-B-<u>(25)</u>-A || [[파일:Schulze method example1 DB.svg|border|none|150px]] D-<u>(28)</u>-C-(29)-B || [[파일:Schulze method example1 DC.svg|border|none|150px]] D-<u>(28)</u>-C || || [[파일:Schulze method example1 DE.svg|border|none|150px]] D-(28)-C-<u>(24)</u>-E
|-
! E →
| [[파일:Schulze method example1 EA.svg|border|none|150px]] E-(31)-D-(28)-C-(29)-B-<u>(25)</u>-A || [[파일:Schulze method example1 EB.svg|border|none|150px]] E-(31)-D-<u>(28)</u>-C-(29)-B || [[파일:Schulze method example1 EC.svg|border|none|150px]] E-(31)-D-<u>(28)</u>-C || [[파일:Schulze method example1 ED.svg|border|none|150px]] E-<u>(31)</u>-D ||
|}

{| class="wikitable" style="text-align:center"
|-
! !! p[*,A] !! p[*,B] !! p[*,C] !! p[*,D] !! p[*,E]
|-
! p[A,*]
|    || 28 || 28 || 30 || 24
|-
! p[B,*]
| 25 ||    || 28 || 33 || 24
|-
! p[C,*]
| 25 || 29 ||    || 29 || 24
|-
! p[D,*]
| 25 || 28 || 28 ||    || 24
|-
! p[E,*]
| 25 || 28 || 28 || 31 ||    
|-
|+최강경로의 강도
|}
E 후보자는, 모든 다른 후보자 X에 대하여 p[E,X] ≥ p[X,E]이므로 잠재적 승자이다.
* 25 = p[E,A] > p[A,E] = 24이므로 후보자 E는 후보자 A보다 선호된다.
* 28 = p[E,B] > p[B,E] = 24이므로 후보자 E는 후보자 B보다 선호된다.
* 28 = p[E,C] > p[C,E] = 24이므로 후보자 E는 후보자 C보다 선호된다.
* 31 = p[E,D] > p[D,E] = 24이므로 후보자 E는 후보자 D보다 선호된다.
* 28 = p[A,B] > p[B,A] = 25이므로 후보자 A는 후보자 B보다 선호된다.
* 28 = p[A,C] > p[C,A] = 25이므로 후보자 A는 후보자 C보다 선호된다.
* 30 = p[A,D] > p[D,A] = 25이므로 후보자 A는 후보자 D보다 선호된다.
* 29 = p[C,B] > p[B,C] = 28이므로 후보자 C는 후보자 B보다 선호된다.
* 29 = p[C,D] > p[D,C] = 28이므로 후보자 C는 후보자 D보다 선호된다.
* 33 = p[B,D] > p[D,B] = 28이므로 후보자 B는 후보자 D보다 선호된다.
그러므로 슐츠 순위는 E > A > C > B > D 순이다.

== 구현 ==
후보자 수를 C라고 하자.
그러면 [[플로이드-워셜 알고리듬]]으로 가장 강력한 경로의 강도를 계산할 수 있다.
아래의 파스칼 유사코드는 그러한 경로 판단을 나타낸 것이다.

* '''입력''': d[i,j]는 i후보를 j후보보다 강력하게 선호하는 투표자 수이다.
* '''출력''': p[i,j]는 i후보에서 j후보로 가는 가장 강력한 경로의 강도이다.

<syntaxhighlight lang="pascal" line="1">
for i : = 1 to C
begin
   for j : = 1 to C
   begin
      if ( i ≠ j ) then
      begin
         if ( d[i,j] > d[j,i] ) then
         begin
            p[i,j] : = d[i,j]
         end
         else
         begin
            p[i,j] : = 0
         end
      end
   end
end

for i : = 1 to C
begin
   for j : = 1 to C
   begin
      if ( i ≠ j ) then
      begin
         for k : = 1 to C
         begin
            if ( i ≠ k ) then
            begin
               if ( j ≠ k ) then
               begin
                  p[j,k] : = max ( p[j,k], min ( p[j,i], p[i,k] ) )
               end
            end
         end
      end
   end
end
</syntaxhighlight>

== 외부 링크 ==
* {{위키공용분류-줄}}

{{선거 제도}}

[[분류:선거 제도]]