
    9iG                     "    S SK rSSKJr  SS jrg)    N   )_spathc           
         US:  a  X R                   -  nSU-  S-   4U R                   S-
  -  n[        R                  " U5      U-
  n[        R                  " XR[        R                  " U5      SS9n[        R
                  R                  U5      n[        R                  " XPR                   U4SS9R                  nU R                  SU U R                  US-   S -   n[        R                  " U5      n	[        R
                  R                  U5      n
[        R                  " X[        R                  " U5      SS9n[        R                  " XR                   U
4SS9R                  n[        R                  " U	U[        R                  " USU	R                  S	9SS9n[        R                  " XR                   U
4SS9R                  n[        R                  " XS
9nUR                  XSS9u  nnU H'  nU[!        U5         nU[        R"                  :w  d  M'    O   UR%                  W5      nU(       dX  [        R&                  " U5      n[        R(                  " USS2SU24   USS2US-   S24   /SS9n[        R*                  " U5      nUW4$ )a  Find the shortest path through an n-d array from one side to another.

Parameters
----------
arr : ndarray of float64
reach : int, optional
    By default (``reach = 1``), the shortest path can only move
    one row up or down for every step it moves forward (i.e.,
    the path gradient is limited to 1). `reach` defines the
    number of elements that can be skipped along each non-axis
    dimension at each step.
axis : int, optional
    The axis along which the path must always move forward (default -1)
output_indexlist : bool, optional
    See return value `p` for explanation.

Returns
-------
p : iterable of int
    For each step along `axis`, the coordinate of the shortest path.
    If `output_indexlist` is True, then the path is returned as a list of
    n-d tuples that index into `arr`. If False, then the path is returned
    as an array listing the coordinates of the path along the non-axis
    dimensions for each step along the axis dimension. That is,
    `p.shape == (arr.shape[axis], arr.ndim-1)` except that p is squeezed
    before returning so if `arr.ndim == 2`, then
    `p.shape == (arr.shape[axis],)`
cost : float
    Cost of path.  This is the absolute sum of all the
    differences along the path.

r      r   )axisF)orderN)dtype)offsetsF)find_all_ends)ndimnpindicesinsertonesmultiplyreducereshapeTshapezerosfullr   r   MCP_Diff
find_coststupleinf	tracebackarrayconcatenatesqueeze)arrreachr   output_indexlistoffset_ind_shapeoffset_indicesoffset_sizer   non_axis_shapenon_axis_indicesnon_axis_sizestart_indicesstartsend_indicesendsmcostsr   endcosts                       S/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/graph/spath.pyshortest_pathr4      s-   H axE	A'388a<8ZZ 01E9NYY~RWW=M5NUVWN++$$%56Kjj((K)@LNNG
 YYu%		$(*(==Nzz.1KK&&~6MII.bhh~6NUVWMZZ-'@LNNF))
*:*@*@A	K ::kHHm#<CHJJD 	-A||F|FE9 U3Z 266>  C IHHY'	NNq%4%x )AtaxzM":;!
	 JJy)	d?    )r   r
   F)numpyr    r   r4    r5   r3   <module>r9      s     Nr5   