<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">76731</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2026.076731</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Privacy-Preserving Parallel Non-Negative Matrix Factorization with Edge Computing</article-title>
<alt-title alt-title-type="left-running-head">Privacy-Preserving Parallel Non-Negative Matrix Factorization with Edge Computing</alt-title>
<alt-title alt-title-type="right-running-head">Privacy-Preserving Parallel Non-Negative Matrix Factorization with Edge Computing</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Yu</surname><given-names>Wenxuan</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western"><surname>Gao</surname><given-names>Wenjing</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-3" contrib-type="author">
<name name-style="western"><surname>Wang</surname><given-names>Jiuru</given-names></name><xref ref-type="aff" rid="aff-2">2</xref></contrib>
<contrib id="author-4" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Hao</surname><given-names>Rong</given-names></name><xref ref-type="aff" rid="aff-1">1</xref><xref rid="cor1" ref-type="corresp">&#x002A;</xref><email>hr@qdu.edu.cn</email></contrib>
<contrib id="author-5" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Yu</surname><given-names>Jia</given-names></name><xref ref-type="aff" rid="aff-1">1</xref><xref rid="cor1" ref-type="corresp">&#x002A;</xref><email>qduyujia@gmail.com</email></contrib>
<aff id="aff-1"><label>1</label><institution>College of Computer Science and Technology, Qingdao University</institution>, <addr-line>Qingdao</addr-line>, <country>China</country></aff>
<aff id="aff-2"><label>2</label><institution>School of Information Science and Engineering, Linyi University</institution>, <addr-line>Linyi</addr-line>, <country>China</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Authors: Rong Hao. Email: <email>hr@qdu.edu.cn</email>; Jia Yu. Email: <email>qduyujia@gmail.com</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2026</year>
</pub-date>
<pub-date date-type="pub" publication-format="electronic">
<day>9</day><month>4</month><year>2026</year>
</pub-date>
<volume>87</volume>
<issue>3</issue>
<elocation-id>14</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>11</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>27</day>
<month>01</month>
<year>2026</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2026 The Authors. Published by Tech Science Press.</copyright-statement>
<copyright-year>2026</copyright-year>
<copyright-holder>The Authors</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMC_76731.pdf"></self-uri>
<abstract>
<p>Non-negative Matrix Factorization (NMF) is a computationally intensive matrix operation that resource-constrained clients struggle to complete locally. Privacy-preserving outsourcing allows clients to offload heavy computing tasks to powerful servers, effectively solving the problem of local computing difficulties. However, the existing privacy-preserving NMF outsourcing schemes only allow one server to perform outsourcing computation, resulting in low efficiency on the server side. In order to improve the efficiency of outsourcing computation, we propose a privacy-preserving parallel NMF outsourcing scheme with multiple edge servers. We adopt the matrix blocking technique to divide the computation task into multiple subtasks, and design the NMF parallel computation algorithm based on the multiplication updating rule. The proposed scheme implements the parallel outsourcing of non-negative matrix factorization based on multiple edge servers. We use random permutation matrices to encrypt original matrix, thereby protecting data privacy. In addition, we utilize the iterative nature of the NMF algorithm for result verification. Theoretical analysis and experimental results prove the advantages of the proposed scheme.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Secure outsourcing computation</kwd>
<kwd>non-negative matrix factorization</kwd>
<kwd>parallel outsourcing</kwd>
<kwd>edge computing</kwd>
</kwd-group>
<funding-group>
<award-group id="awg1">
<funding-source>Shandong Provincial Natural Science Foundation</funding-source>
<award-id>ZR2024MF038</award-id>
</award-group>
<award-group id="awg2">
<funding-source>Qingdao Natural Science Foundation</funding-source>
<award-id>25-1-1-103-zyyd-jchZ</award-id>
</award-group>
</funding-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<sec id="s1_1">
<label>1.1</label>
<title>Background</title>
<p>Today&#x2019;s society is increasingly driven by big data. With the widespread adoption of the internet, the volume of generated data is growing exponentially, with vast amounts of information being produced every second. The storage, processing, and analysis of this data have become one of the most significant challenges of modern society. Dimensionality reduction techniques play a crucial role in addressing these challenges by converting high-dimensional data into lower-dimensional representations while retaining key information from the original dataset. This is particularly important when dealing with large-scale data. Since most commonly encountered data, such as images and documents, are non-negative, it is essential to address the processing of non-negative data [<xref ref-type="bibr" rid="ref-1">1</xref>]. Non-negative Matrix Factorization (NMF), a widely used dimensionality reduction method, decomposes a non-negative matrix into the product of two non-negative matrices, enabling the efficient extraction of underlying features from the data. NMF has been successfully applied in data mining [<xref ref-type="bibr" rid="ref-2">2</xref>], image processing [<xref ref-type="bibr" rid="ref-3">3</xref>], and text analysis [<xref ref-type="bibr" rid="ref-4">4</xref>,<xref ref-type="bibr" rid="ref-5">5</xref>], offering advantages such as high stability and reduced storage requirements. Compared to other matrix factorization methods, NMF provides interpretable decomposition results and significantly reduces storage space [<xref ref-type="bibr" rid="ref-6">6</xref>]. However, as the scale of data continues to grow, the computational cost of NMF also increases. For clients with limited computing resources, performing NMF on large-scale datasets becomes a challenging task.</p>
<p>Edge computing, as an emerging computational paradigm, effectively addresses the challenges of large-scale data processing and has gained popularity in the Internet of Things (IoT). Unlike the traditional cloud computing that relies on remote data centers, edge computing allows client to offload computational tasks to edge servers located near the data source. This reduces the need for large data transfers to remote servers, saving bandwidth and reducing latency. Client offloading computational tasks to multiple edge servers can significantly reducing the client&#x2019;s computational overhead and improving efficiency. By enabling multiple edge servers to execute computing tasks in parallel, productivity can be significantly boosted. Despite its significant benefits, edge computing also faces several challenges. When the client outsources the computational task to the edge servers, both the data and computations performed on the server side fall outside the client&#x2019;s direct control. One of the primary concerns is ensuring data privacy. Data often involves sensitive information, such as personal medical records [<xref ref-type="bibr" rid="ref-7">7</xref>], making privacy protection crucial. Additionally, edge servers may engage in malicious activities, such as falsifying computation results, which requires reliable verification mechanisms to ensure the accuracy of the results [<xref ref-type="bibr" rid="ref-8">8</xref>].</p>
<p>Secure outsourcing computation refers to outsourcing computational tasks to service providers while ensuring data privacy and the correctness of the computation results [<xref ref-type="bibr" rid="ref-9">9</xref>]. In a secure outsourcing computation scheme based on edge servers, both the privacy of the client&#x2019;s input and output must be adequately protected [<xref ref-type="bibr" rid="ref-10">10</xref>], ensuring that the edge servers cannot gain any valuable information about the client from the outsourced tasks. At the same time, the client should be able to verify the correctness of the computation results returned by the edge servers. This guarantees that the results are accurate and protects against data leakage or result tampering. Furthermore, the client&#x2019;s local computational overhead in secure outsourcing should be significantly lower than the computational overhead of the original task.</p>
<p>In recent years, several secure outsourcing computation schemes for NMF have been proposed [<xref ref-type="bibr" rid="ref-11">11</xref>,<xref ref-type="bibr" rid="ref-12">12</xref>]. These schemes allow clients to securely outsource NMF tasks to the cloud server. However, none of these schemes support parallel outsourcing across multiple edge servers. Actually, it is common for multiple edge servers to assist in computations. Meanwhile, most existing schemes focus on client side efficiency, they often neglect server-side efficiency. How to enhance server efficiency based on parallel computing is a significant challenge. To address this challenge, we aim to develop a novel privacy-preserving parallel NMF outsourcing scheme.</p>
</sec>
<sec id="s1_2">
<label>1.2</label>
<title>Related Works</title>
<p>In recent years, secure outsourcing computation has been widely concerned by people. Research on secure outsourcing of matrix-related computations is quite common. Lei et al. [<xref ref-type="bibr" rid="ref-13">13</xref>] proposed a secure outsourcing scheme for matrix inversion computation (MIC). They utilized the random permutation matrix to transform the original matrix and employed the Monte Carlo algorithm for verification. Later, Lei et al. [<xref ref-type="bibr" rid="ref-14">14</xref>] proposed a scheme to outsource large-scale matrix multiplication calculation. The encryption and verification were similar with the previous scheme [<xref ref-type="bibr" rid="ref-13">13</xref>]. Fu et al. [<xref ref-type="bibr" rid="ref-15">15</xref>] pointed out a security problem in the scheme published by Lei et al. [<xref ref-type="bibr" rid="ref-14">14</xref>]. To protect the number of zero elements in the two original matrices from being leaked to the cloud server, Fu et al. [<xref ref-type="bibr" rid="ref-15">15</xref>] constructed two random matrices and added them to the original matrices. Lei et al. [<xref ref-type="bibr" rid="ref-16">16</xref>] proposed a secure outsourcing scheme for the calculation of determinants of large matrices. They introduced block matrix and permutation technique to protect privacy. Subsequently, they implemented LU decomposition on the cloud server to facilitate the verification process. Liu et al. [<xref ref-type="bibr" rid="ref-17">17</xref>] pointed out that the scheme proposed by Lei et al. [<xref ref-type="bibr" rid="ref-16">16</xref>] cannot achieve the level of security they claim because the encryption matrix can be simplified. This simplification renders the block-matrix technique ineffective. They further prove that the block matrix used in the scheme is redundant. In order to solve these problems, they do not employ the block matrix technique, but instead they introduce mix-row and mix-column operations for privacy protection. For the eigen-decomposition (ED) and singular value decomposition (SVD) of the matrix, Zhou and Li [<xref ref-type="bibr" rid="ref-18">18</xref>] designed two privacy-preserving outsourcing protocols. They used random numbers and identity matrix to protect the information of the original matrix. And then they used orthogonal matrix to rearrange the matrix for privacy protection. But the number of zero elements was revealed. Luo et al. [<xref ref-type="bibr" rid="ref-19">19</xref>] proposed a feasible scheme for secure outsourcing of large-scale QR decomposition and LU decomposition. They designed a series of protection measures for the upper triangle, lower triangle, general, and orthogonal matrices during the decomposition process to ensure privacy protection. The scheme also involves outsourcing matrix inversion operations required for result recovery. Additionally, they implemented security measures for continuous data transmission between the client side and the server side. Li et al. [<xref ref-type="bibr" rid="ref-20">20</xref>] proposed a protocol for IoT devices solving SVD. They used Hestenes method to achieve lightweight transformation of matrices while protecting privacy. Liu et al. [<xref ref-type="bibr" rid="ref-21">21</xref>] proposed a subtly designed invertible matrix and designed an outsourcing scheme based on it. They proposed an optimized matrix chain multiplication that can improve efficiency while also being applied to other outsourced tasks. Gao and Su [<xref ref-type="bibr" rid="ref-22">22</xref>] proposed the first distributed verifiable and traceable utility scheme for matrix multiplication. They proposed a traceable method which minimizes the computational load on the client.</p>
<p>For non-negative matrix factorization, Liu et al. [<xref ref-type="bibr" rid="ref-23">23</xref>] proposed a secure outsourcing scheme by using random permutation matrix for encryption and decryption. They also proposed a method using 1-norm of matrix to verify the results. Duan et al. [<xref ref-type="bibr" rid="ref-12">12</xref>] implemented the encryption of the NMF input matrix through the random arrangement and scaling encryption mechanism. They proposed to run one round of iterative operation on the client for verification. This scheme allows the client to verify the accuracy of the returned results. Then Fu et al. [<xref ref-type="bibr" rid="ref-11">11</xref>] designed a new NMF secure outsourcing scheme based on two non-colluding servers to realize interactive iterative computation of NMF. They used Paillier homomorphic encryption to protect data privacy and utilized two cloud servers to serially execute NMF tasks. Saha and Imtiaz [<xref ref-type="bibr" rid="ref-24">24</xref>] proposed a privacy-preserving NMF algorithm based on differential privacy. They injected Gaussian noise into gradient computation and modelled the outliers in the data to ensure differential privacy. In summary, the above privacy-preserving outsourcing scheme of NMF does not support parallel outsourcing of multiple servers, which motivates our research on parallel outsourcing. In order to improve the efficiency of the server, we devote to the study of privacy-preserving parallel non-negative matrix factorization with multiple edge servers in this paper.</p>
</sec>
<sec id="s1_3">
<label>1.3</label>
<title>Contributions</title>
<p>We propose a privacy-preserving parallel outsourcing scheme for non-negative matrix factorization. Our contributions are as follows:
<list list-type="bullet">
<list-item>
<p>To enhance efficiency, we design a parallel outsourcing scheme utilizing multiple nearby edge servers. This scheme divides the computation task into several subtasks using matrix block techniques and employs the multiplicative update rule for NMF parallel computation. This approach not only facilitates NMF parallel computation but also significantly boosts computational efficiency.</p></list-item>
<list-item>
<p>To protect data privacy, we employ random permutation matrix to encrypt the input matrix, ensuring the confidentiality of both the input matrix and output results. Concurrently, to guard against incorrect results from the server, we leverage the iterative nature of NMF to verify results, thereby ensuring their verifiability.</p></list-item>
<list-item>
<p>Through theoretical analysis and experimental comparison, our scheme significantly reduces the client&#x2019;s computation time. Furthermore, parallel computing substantially lightens the computational workload on each edge server.</p></list-item>
</list></p>
<p><italic>Organization:</italic> The rest of this article is as follows. In <xref ref-type="sec" rid="s2">Section 2</xref>, we present the system model, the threat model and the design goals. In <xref ref-type="sec" rid="s3">Section 3</xref>, we introduce the preliminary content of relevant mathematical knowledge. In <xref ref-type="sec" rid="s4">Section 4</xref>, we construct the scheme of the parallel outsourcing computation of non-negative matrix factorization. <xref ref-type="sec" rid="s5">Section 5</xref> makes a theoretical analysis of the proposed scheme. <xref ref-type="sec" rid="s6">Section 6</xref> gives the analysis of the experimental results. Finally we draw the conclusion in <xref ref-type="sec" rid="s7">Section 7</xref>.</p>
</sec>
</sec>
<sec id="s2">
<label>2</label>
<title>Models and Definitions</title>
<sec id="s2_1">
<label>2.1</label>
<title>System Model</title>
<p>As shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>, the system model consists of two types of entities. The first is the client, which wants to complete non-negative matrix factorization tasks but has limited computing power. The second are the edge servers, which have sufficient computing power. In this scenario, the client wants to outsource the NMF task to the edge servers. To protect the privacy of the client, the client first generates a secret key and encrypts the original input matrix. Then the client partitions the encryption matrix and sends the partitioned encrypted matrices to each edge server. The edge servers execute the NMF task in parallel and return the decomposition results <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:msup><mml:mi>H</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> to the client. After receiving the results, the client verifies whether <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:msup><mml:mi>H</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> are valid. The client accepts them if they are valid, and rejects them otherwise. Then it decrypts the results and obtains the matrices <italic>W</italic> and <italic>H</italic>.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>System model.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-1.tif"/>
</fig>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Threat Model</title>
<p>Generally speaking, there are three main types of threat models in the field of secure outsourcing computation: &#x201C;lazy-but-honest&#x201D;, &#x201C;honest-but-curious&#x201D; and &#x201C;fully malicious&#x201D;. We assume that the edge server is fully malicious, which indicates that the server has the strongest attack capability. That is, the edge servers will try to steal the client&#x2019;s data and return the wrong result. So the client needs to process the raw plaintext data for privacy protection and verify the returned result. In our threat model, the collusion of multiple edge servers is allowed, which requires our scheme to achieve a high level of security.</p>
</sec>
<sec id="s2_3">
<label>2.3</label>
<title>Design Goals</title>
<p>The scheme we design should meet the following goals:
<list list-type="bullet">
<list-item>
<p><italic>Correctness</italic>: If the client and the edge servers follow the scheme honestly, the result the client gets should be the correct solution to the original NMF task.</p></list-item>
<list-item>
<p><italic>Privacy</italic>: The proposed scheme ought to protect the privacy of the client, the edge server can not obtain the knowledge related to the client from the encrypted data.</p></list-item>
<list-item>
<p><italic>Efficiency</italic>: The client&#x2019;s local computation should be significantly less than what the original NMF would require by itself. The amount of computation in each edge server decreases with the number of servers involving parallel computing increasing.</p></list-item>
<list-item>
<p><italic>Verifiability</italic>: The client possesses the capability to verify the accuracy of the results received. False results generated by a cheating edge server cannot pass the verification with a non-negligible probability.</p></list-item>
</list></p>
</sec>
<sec id="s2_4">
<label>2.4</label>
<title>Security Definition</title>
<p>We give the definition of privacy-preserving parallel computation scheme and provide the security definition in terms of privacy. A privacy-preserving parallel computation scheme <italic>PPS</italic> is private, if the PPT adversary <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> cannot obtain the input and output data. Here we give the definition of privacy, which are consistent with that in [<xref ref-type="bibr" rid="ref-25">25</xref>]. We define the experiment <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Exp</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mi>riv</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">[</mml:mo><mml:mi>P</mml:mi><mml:mi>P</mml:mi><mml:mi>S</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> as follows, where <inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:mi>p</mml:mi><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>y</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is a polynomial.</p>
<fig id="fig-11">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-11.tif"/>
</fig>
<p>In the above experiment, the adversary <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> is granted oracle access to query the public output of Enc on any input, and allowed to query it polynomial times. After the multiple queries, <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> tries to acquire the input of a public value <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msub><mml:mi>E</mml:mi><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub></mml:math></inline-formula>. If <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> can recover <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:msup><mml:mi>x</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> from <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:msub><mml:mi>E</mml:mi><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub></mml:math></inline-formula>, then <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> succeeds. The advantage of an adversary <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> in the above experiment is defined as <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Adv</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mtext>Priv&#xA0;</mml:mtext></mml:mrow></mml:msubsup></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>P</mml:mi><mml:mi>P</mml:mi><mml:mi>S</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mi>P</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:msubsup><mml:mrow><mml:mi>E</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo stretchy="false">[</mml:mo><mml:mi>P</mml:mi><mml:mi>P</mml:mi><mml:mi>S</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">]</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></inline-formula></p>
<p><bold>Definition 1:</bold> <italic>A privacy-preserving parallel computation scheme <italic>PPS</italic> is input-private if for any PPT adversary <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula>, the advantage of <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:math></inline-formula> in <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:msubsup><mml:mrow><mml:mi>E</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo stretchy="false">[</mml:mo><mml:mi>P</mml:mi><mml:mi>P</mml:mi><mml:mi>S</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> is negligible, i.e., <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>A</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mrow><mml:mi>&#x1D49C;</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>P</mml:mi><mml:mi>P</mml:mi><mml:mi>S</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2264;</mml:mo><mml:mi>&#x03B5;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></inline-formula></italic></p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Preliminaries</title>
<sec id="s3_1">
<label>3.1</label>
<title>Non-Negative Matrix Factorization</title>
<p>For a given non-negative matrix <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:mrow><mml:mtext mathvariant="italic">V</mml:mtext></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, NMF looks for two non-negative matrices <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:mrow><mml:mtext mathvariant="italic">W</mml:mtext></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:mrow><mml:mtext mathvariant="italic">H</mml:mtext></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> such that
<disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:mrow><mml:mo>&#x2248;</mml:mo><mml:mrow><mml:mrow><mml:mi>W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mi>H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:mi>r</mml:mi></mml:math></inline-formula> is a dimension parameter. The problem of solving NMF can actually be transformed into the following minimization problem
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:munder><mml:mo movablelimits="true" form="prefix">min</mml:mo><mml:mrow><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi>H</mml:mi></mml:mrow></mml:mrow></mml:munder><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo>&#x2223;</mml:mo><mml:mrow><mml:mi>W</mml:mi><mml:mi>H</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mtext>&#xA0;s.t.&#xA0;</mml:mtext><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mo>&#x2265;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mo>&#x2265;</mml:mo><mml:mn>0</mml:mn><mml:mtext>.&#xA0;</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The cost function <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo>&#x2223;</mml:mo><mml:mrow><mml:mi>W</mml:mi><mml:mi>H</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> has many calculation methods, such as squared Euclidean distance, Kullback-Leibler (KL) divergence, and so on. Our scheme uses the squared Euclidean distance as the cost function, which can be expressed as
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo>&#x2223;</mml:mo><mml:mrow><mml:mi>W</mml:mi><mml:mi>H</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>m</mml:mi></mml:munderover><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>W</mml:mi><mml:mi>H</mml:mi><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>which subjects to <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2265;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:msub><mml:mi>H</mml:mi><mml:mrow><mml:mi>b</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2265;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2200;</mml:mi><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:math></inline-formula>. Lee and Seung [<xref ref-type="bibr" rid="ref-26">26</xref>] take squared Euclidean distance as the cost function and put forward the multiplicative update rule of NMF algorithm. In the multiplicative update rule, as long as the initial matrix is non-negative, then the iterative matrices of each round will be non-negative. Specifically, after initializing the non-negative matrices <italic>W</italic> and <italic>H</italic>, the following iterative update rule are applied to <italic>W</italic> and <italic>H</italic>:
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>V</mml:mi><mml:msup><mml:mi>H</mml:mi><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>W</mml:mi><mml:mi>H</mml:mi><mml:msup><mml:mi>H</mml:mi><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mfrac><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>H</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mi>V</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mi>W</mml:mi><mml:mi>H</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mfrac><mml:mrow><mml:mtext>.</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Kronecker Delta Function</title>
<p>The Kronecker delta function is widely used in engineering and is often employed in matrix construction. The Kronecker delta function is defined as
<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left left left left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mi>y</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>x</mml:mi><mml:mo>&#x2260;</mml:mo><mml:mi>y</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow><mml:mrow><mml:mtext>.</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Random Permutation Function</title>
<p>Permutation functions have been extensively studied. The permutation function can be expressed as follows:
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>&#x03C0;</mml:mi><mml:mo>:</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:mi>n</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>p</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:mi>&#x03C0;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. Algorithm 1 can be utilized to generate a random permutation.</p>
<fig id="fig-12">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-12.tif"/>
</fig>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Scheme Construction</title>
<p>For a non-negative matrix <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:mrow><mml:mtext mathvariant="italic">V</mml:mtext></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, the client aims to outsource the NMF computation task of <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:mrow><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:mrow><mml:mo>&#x2248;</mml:mo><mml:mrow><mml:mrow><mml:mi>W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mi>H</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> to multiple edge servers for execution in parallel. We design a privacy-preserving parallel outsourcing scheme for non-negative matrix factorization, which consists of five algorithms as shown below:
<list list-type="bullet">
<list-item>
<p><bold>Key generation:</bold> The client generates the secret key for encryption and decryption.</p></list-item>
<list-item>
<p><bold>Encryption:</bold> The client encrypts the original input matrix using the secret key. After that, the client partitions the encrypted matrix by row and column. Then client sends them to edge servers.</p></list-item>
<list-item>
<p><bold>NMF parallel computation:</bold> Edge servers that received the outsourced task performs the iterative calculation of the non-negative matrix factorization in parallel.</p></list-item>
<list-item>
<p><bold>Result verification:</bold> The client verifies the validity of the result. Accept the result if it passes the verification, reject it otherwise.</p></list-item>
<list-item>
<p><bold>Decryption:</bold> The client decrypts the verified matrices and obtains the decomposition result of the original non-negative matrix.</p></list-item>
</list></p>
<p>The outline of the proposed scheme is presented in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>. The detailed descriptions of the algorithms are as follows:</p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>The outline of the proposed scheme.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-2.tif"/>
</fig>
<sec id="s4_1">
<label>4.1</label>
<title>Key Generation</title>
<p>The client generates secret key <italic>K</italic> through Algorithm 2. The secret key <italic>K</italic> consists of two sets of random numbers <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula>, <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula> and random permutations <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>. Given a security parameter <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:mi>&#x03BB;</mml:mi></mml:math></inline-formula>, the client generates two key spaces <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:msub></mml:math></inline-formula>. Then, the client generates random permutations <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> through Algorithm 1.</p>
<fig id="fig-13">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-13.tif"/>
</fig>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Encryption</title>
<p>The client implements the encryption of the original matrix through Algorithm 3. The client first generates random permutation matrices <italic>P</italic> and <italic>Q</italic> using the secret key <italic>K</italic>. The matrices <italic>P</italic> and <italic>Q</italic> are both invertible matrices, which can be supported by Theorem 1. Furthermore, their inverse can be expressed as follows:
<disp-formula id="ueqn-8"><mml:math id="mml-ueqn-8" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mtext>,&#xA0;</mml:mtext><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mtext>.</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="ueqn-9"><mml:math id="mml-ueqn-9" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mtext>,&#xA0;</mml:mtext><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mrow><mml:mtext>.</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<fig id="fig-14">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-14.tif"/>
</fig>
<p>The original input matrix is encrypted by calculating <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. Additionally, the matrix <italic>V</italic><sup><italic>&#x2032;</italic></sup> can be easily formulated based on Theorem 2. After the original matrix <italic>V</italic> is encrypted, the client performs matrix partition on the encrypted matrix <italic>V</italic><sup><italic>&#x2032;</italic></sup>. After the matrix is partitioned by rows and columns, the client sends the partitioned results <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:msubsup><mml:mi>V</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mfrac><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:msubsup><mml:mi>V</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:mfrac></mml:mrow></mml:msup></mml:math></inline-formula> to the corresponding <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula>(<inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mn>1</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mi>&#x03B1;</mml:mi><mml:mo>&#x2264;</mml:mo><mml:mi>p</mml:mi></mml:math></inline-formula>). Note that <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:mi>p</mml:mi></mml:math></inline-formula> is the number of edge servers executing the parallel NMF algorithm.</p>
<p><bold>Theorem 1:</bold> <italic>The matrices P and Q generated in Algorithm 3 are invertible matrices</italic>.</p>
<p><bold>Proof of Theorem 1:</bold> Since <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:mn>0</mml:mn><mml:mo>&#x2209;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>&#x222A;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:msub></mml:math></inline-formula>, the determinants of <italic>P</italic> and <italic>Q</italic> satisfy <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:mo movablelimits="true" form="prefix">det</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:mo movablelimits="true" form="prefix">det</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>Q</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. Therefore, <italic>P</italic> and <italic>Q</italic> are invertible. <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
<p><bold>Theorem 2:</bold> <italic>During the encryption process, the entry in <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:msup><mml:mi>i</mml:mi><mml:mrow><mml:mtext>th</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula> row and <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:msup><mml:mi>j</mml:mi><mml:mrow><mml:mtext>th</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula> column of the encrypted matrix V<sup>&#x2032;</sup> can be denoted as:</italic>
<disp-formula id="ueqn-10"><mml:math id="mml-ueqn-10" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22C5;</mml:mo><mml:mi>V</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p><bold>Proof of Theorem 2:</bold> Let
<disp-formula id="ueqn-11"><mml:math id="mml-ueqn-11" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Since <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:mi>P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, we can obtain:
<disp-formula id="ueqn-12"><mml:math id="mml-ueqn-12" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x22EF;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Due to <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, we can obtain:
<disp-formula id="ueqn-13"><mml:math id="mml-ueqn-13" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x2026;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x2026;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x2026;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Therefore, <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> can be written as:
<disp-formula id="ueqn-14"><mml:math id="mml-ueqn-14" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>V</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By the above calculation, the client can efficiently compute <italic>V&#x2032;</italic> with computational complexity of <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
</sec>
<sec id="s4_3">
<label>4.3</label>
<title>NMF Parallel Computation</title>
<p>For the encrypted matrix <italic>V&#x2032;</italic>, edge servers perform NMF parallel computing algorithm as shown in Algorithm 4. The edge server <inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> initializes the matrices <inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mfrac><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:mfrac></mml:mrow></mml:msup></mml:math></inline-formula> with random elements greater than or equal to zero, and then computes <inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula>. Then <inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> sends the calculated result <inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and the initialized matrix <inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> to other edge servers. Meanwhile, <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> accepts matrices from other edge servers. After receiving matrices from all other servers, matrix <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:mrow><mml:mtext mathvariant="italic">L</mml:mtext></mml:mrow></mml:math></inline-formula> is obtained by aggregating the matrix <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> of each server. At the same time, the matrix <inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:mrow><mml:msup><mml:mi>H</mml:mi><mml:mn>0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> is obtained by splicing <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> by matrix columns. <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> can then compute
<disp-formula id="ueqn-15"><mml:math id="mml-ueqn-15" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>to update the local matrix. In our scheme, the edge servers update the matrix <italic>W</italic> through the matrix <italic>H</italic> and then update the matrix <italic>H</italic> through the matrix <italic>W</italic>. Therefore, <inline-formula id="ieqn-112"><mml:math id="mml-ieqn-112"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> sends the local matrix <inline-formula id="ieqn-113"><mml:math id="mml-ieqn-113"><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> or <inline-formula id="ieqn-114"><mml:math id="mml-ieqn-114"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> to other servers every time to update the local matrix as <inline-formula id="ieqn-115"><mml:math id="mml-ieqn-115"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> or <inline-formula id="ieqn-116"><mml:math id="mml-ieqn-116"><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>.</p>
<fig id="fig-15">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-15.tif"/>
</fig>
<p>After the initialization part over, the iterative update process begin. The turn <italic>R</italic> of the iteration is entered as a parameter by the client which is usually determined by experience. In the initialization process, each edge server has obtained <inline-formula id="ieqn-174"><mml:math id="mml-ieqn-174"><mml:msup><mml:mi>W</mml:mi><mml:mn>1</mml:mn></mml:msup></mml:math></inline-formula>, so the matrix <italic>H</italic> can be iterated. At that time, <inline-formula id="ieqn-175"><mml:math id="mml-ieqn-175"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> can calculate <inline-formula id="ieqn-176"><mml:math id="mml-ieqn-176"><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mi>t</mml:mi></mml:msup></mml:mrow><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mi>t</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. In order to reduce the complexity of calculation, it chooses to calculate <inline-formula id="ieqn-177"><mml:math id="mml-ieqn-177"><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> and sends it to other servers for aggregation to obtain matrix <italic>S</italic>. Then <inline-formula id="ieqn-178"><mml:math id="mml-ieqn-178"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> can compute
<disp-formula id="ueqn-16"><mml:math id="mml-ueqn-16" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>to updates the local matrix and sends it to other servers. After the matrix <inline-formula id="ieqn-179"><mml:math id="mml-ieqn-179"><mml:msup><mml:mi>H</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is obtained through aggregation, the iterative update of <inline-formula id="ieqn-180"><mml:math id="mml-ieqn-180"><mml:msup><mml:mi>W</mml:mi><mml:mi>t</mml:mi></mml:msup></mml:math></inline-formula> to <inline-formula id="ieqn-181"><mml:math id="mml-ieqn-181"><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> can be performed. The steps here are similar to those during initialization. Finally, Algorithm 4 outputs the NMF calculation results <inline-formula id="ieqn-182"><mml:math id="mml-ieqn-182"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-183"><mml:math id="mml-ieqn-183"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula>.</p>
<p><bold>Remark:</bold> <italic>The number of iterations R is a parameter specified by the client based on matrix size and accuracy requirements. In practice, larger matrices and higher accuracy demands require more iterations. We know a common criterion set <inline-formula id="ieqn-184"><mml:math id="mml-ieqn-184"><mml:mi>R</mml:mi><mml:mo>&#x2265;</mml:mo><mml:mn>20</mml:mn><mml:mi>r</mml:mi></mml:math></inline-formula>. For small matrices with <inline-formula id="ieqn-185"><mml:math id="mml-ieqn-185"><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>&#x003C;</mml:mo><mml:mn>1000</mml:mn></mml:math></inline-formula>, setting the number of iterations R to a value between 200 and 300 is typically sufficient</italic>.</p>
</sec>
<sec id="s4_4">
<label>4.4</label>
<title>Result Verification</title>
<p>The client verifies the results <inline-formula id="ieqn-186"><mml:math id="mml-ieqn-186"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-187"><mml:math id="mml-ieqn-187"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> returned by the edge servers through Algorithm 5. We take advantage of the iterative nature of NMF computation to verify the results with less computational cost. The client takes <inline-formula id="ieqn-188"><mml:math id="mml-ieqn-188"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> received from the edge servers as initial values and executes one iteration of the NMF iterative algorithm to obtain new matrices <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula>. The client can verify the result by using the following inequality
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mrow><mml:mi>R</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>&#x03B5;</mml:mi><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:mi>&#x03F5;</mml:mi></mml:math></inline-formula> is a threshold. If the above inequality is satisfied, the client accepts the results; otherwise refuses them.</p>
<fig id="fig-16">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-16.tif"/>
</fig>
</sec>
<sec id="s4_5">
<label>4.5</label>
<title>Decryption</title>
<p>If the returned result passes verification, the client runs Algorithm 6 with <inline-formula id="ieqn-201"><mml:math id="mml-ieqn-201"><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-202"><mml:math id="mml-ieqn-202"><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula> (instead of <inline-formula id="ieqn-203"><mml:math id="mml-ieqn-203"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-204"><mml:math id="mml-ieqn-204"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula>) as the matrices to be decrypted. The output is the final matrix decomposition result. Similar to encryption operation, decryption operation can be calculated as
<disp-formula id="ueqn-18"><mml:math id="mml-ueqn-18" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mtext>,</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="ueqn-19"><mml:math id="mml-ueqn-19" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mi>H</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By the above calculation, the client can efficiently compute <italic>W</italic> and <italic>H</italic> with the complexity computation <inline-formula id="ieqn-205"><mml:math id="mml-ieqn-205"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> and <inline-formula id="ieqn-206"><mml:math id="mml-ieqn-206"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>.</p>
<fig id="fig-17">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-17.tif"/>
</fig>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Theoretical Analysis</title>
<p>In this section, we provide the analysis of our scheme from the aspects of correctness, privacy, verifiability and efficiency.</p>
<sec id="s5_1">
<label>5.1</label>
<title>Correctness</title>
<p><bold>Theorem 3:</bold> <italic>If the client and the edge servers implement the proposed scheme, the client can eventually get the correct non-negative matrix factorization result</italic>.</p>
<p><bold>Proof of Theorem 3:</bold> Since the solution of NMF is not necessarily unique, there may exist multiple solutions. Our scheme is based on the multiplicative update rules. The results obtained are not exact solutions. Therefore, we consider the results acceptable when the algorithm performs <italic>R</italic> rounds of iterations. Next we prove that encryption and decryption do not affect the results of NMF for <italic>V</italic>. According to Algorithm 3, we have
<disp-formula id="ueqn-20"><mml:math id="mml-ueqn-20" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>&#x2248;</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mi>W</mml:mi><mml:mi>H</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>According to Algorithm 6, we can get <inline-formula id="ieqn-211"><mml:math id="mml-ieqn-211"><mml:mi>W</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mi>W</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup></mml:math></inline-formula> and <italic>H</italic> &#x003D; <italic>H</italic><sup><italic>&#x2032;</italic></sup><italic>Q</italic>. Obviously, matrices <italic>W</italic> and <italic>H</italic> are the factorization results of the original matrix <italic>V</italic>. This shows that encryption and decryption have no effect on the factorization results of <italic>V</italic>.</p>
<p>Finally, we need to prove that the solution is acceptable. If the results returned by the server satisfy inequality <xref ref-type="disp-formula" rid="eqn-8">(8)</xref>, we consider that the servers correctly perform the required number of iteration rounds <italic>R</italic>. The results are acceptable to the client. <inline-formula id="ieqn-212"><mml:math id="mml-ieqn-212"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
</sec>
<sec id="s5_2">
<label>5.2</label>
<title>Data Privacy</title>
<p><bold>Theorem 4:</bold> <italic>The proposed scheme can protect the privacy of input and output data according to Definition 1. That is, the original matrix V and the factorization results W and H will not be leaked to the edge servers</italic>.</p>
<p><bold>Proof of Theorem 4:</bold> First we discuss the privacy of the input matrix <italic>V</italic>. The elements in the original matrix <italic>V</italic> are randomly rearranged under two random permutations, denoted as:
<disp-formula id="ueqn-21"><mml:math id="mml-ueqn-21" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>N</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>V</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Here, <inline-formula id="ieqn-213"><mml:math id="mml-ieqn-213"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> is a random permutation with respect to 1, &#x2026;, <inline-formula id="ieqn-214"><mml:math id="mml-ieqn-214"><mml:mi>m</mml:mi></mml:math></inline-formula>, <inline-formula id="ieqn-215"><mml:math id="mml-ieqn-215"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> is a random permutation with respect to 1, &#x2026;, <inline-formula id="ieqn-216"><mml:math id="mml-ieqn-216"><mml:mi>n</mml:mi></mml:math></inline-formula>. Generating such permutations has <inline-formula id="ieqn-217"><mml:math id="mml-ieqn-217"><mml:mi>m</mml:mi><mml:mo>!</mml:mo><mml:mi>n</mml:mi><mml:mo>!</mml:mo></mml:math></inline-formula> results. Each result has a probability of <inline-formula id="ieqn-218"><mml:math id="mml-ieqn-218"><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:mi>m</mml:mi><mml:mo>!</mml:mo><mml:mi>n</mml:mi><mml:mo>!</mml:mo></mml:mrow></mml:mfrac></mml:math></inline-formula>. This means that if there is an attack on the encrypted matrix <italic>N</italic>, the probability that the attacker gets <italic>V</italic> from <italic>N</italic> by guessing <inline-formula id="ieqn-219"><mml:math id="mml-ieqn-219"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-220"><mml:math id="mml-ieqn-220"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> is <inline-formula id="ieqn-221"><mml:math id="mml-ieqn-221"><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:mi>m</mml:mi><mml:mo>!</mml:mo><mml:mi>n</mml:mi><mml:mo>!</mml:mo></mml:mrow></mml:mfrac></mml:math></inline-formula>. In addition, the elements of the matrix <italic>V</italic> are blinded by a factor, denoted as:
<disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22C5;</mml:mo><mml:mi>V</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22C5;</mml:mo><mml:mi>N</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>This means that even if the malicious edge servers get the correct matrix <inline-formula id="ieqn-222"><mml:math id="mml-ieqn-222"><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> and the random arrangement <inline-formula id="ieqn-223"><mml:math id="mml-ieqn-223"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-224"><mml:math id="mml-ieqn-224"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>, the expected probability for a brute force attack on the key space to get <inline-formula id="ieqn-225"><mml:math id="mml-ieqn-225"><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula> and <inline-formula id="ieqn-226"><mml:math id="mml-ieqn-226"><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula> is <inline-formula id="ieqn-227"><mml:math id="mml-ieqn-227"><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo></mml:mrow><mml:mi>m</mml:mi></mml:msup><mml:msup><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo></mml:mrow><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:math></inline-formula>.</p>
<p>Combining both factors, the total probability that an adversary successfully recovers <italic>V</italic> from <italic>V</italic><sup><italic>&#x2032;</italic></sup> is:
<disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:mo movablelimits="true" form="prefix">Pr</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mrow><mml:mtext>success</mml:mtext></mml:mrow><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x2264;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:mi>m</mml:mi><mml:mo>!</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:mi>n</mml:mi><mml:mo>!</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>m</mml:mi></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mrow><mml:mtext>negl</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></disp-formula></p>
<p>In addition, when an outsourced non-negative matrix factorization is performed on a new input matrix, the secret key is regenerated. Therefore, without the key, the edge servers cannot get the original input from the outsourced task.</p>
<p>Next, we discuss the situation of the collusion among edge servers. Throughout the scheme, each edge server <inline-formula id="ieqn-228"><mml:math id="mml-ieqn-228"><mml:mi>E</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> possesses only a part of the matrix <italic>V<sup>&#x2032;</sup></italic>. And even if they conspired to obtain the entire encrypted matrix <italic>V&#x2032;</italic>, it would be difficult to recover the original matrix <italic>V</italic> without knowing the secret key. In the algorithm, the matrices <italic>W</italic> and <italic>H</italic> are randomly generated by edge servers and iteratively updated in the subsequent process, so the information of the original matrix <italic>V</italic> will not be leaked. Finally, we prove the output privacy of <inline-formula id="ieqn-229"><mml:math id="mml-ieqn-229"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-230"><mml:math id="mml-ieqn-230"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula>. That is, the attacker cannot get the matrices <italic>W</italic> and <italic>H</italic> based on <inline-formula id="ieqn-231"><mml:math id="mml-ieqn-231"><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-232"><mml:math id="mml-ieqn-232"><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup></mml:math></inline-formula>. According to Algorithm 6, <inline-formula id="ieqn-233"><mml:math id="mml-ieqn-233"><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>w</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-234"><mml:math id="mml-ieqn-234"><mml:mi>H</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:math></inline-formula>. Therefore, without the key, the edge servers cannot get the output matrices from the outsourcing task.</p>
<p>Besides, the transformation <inline-formula id="ieqn-235"><mml:math id="mml-ieqn-235"><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mi>V</mml:mi><mml:msup><mml:mi>Q</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> is a linear operation and preserves certain statistical structures. The main leakage pathway is that zero elements are preserved as <inline-formula id="ieqn-236"><mml:math id="mml-ieqn-236"><mml:mi>V</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo stretchy="false">&#x21D4;</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. Due to most of the original matrices used for NMF are dense matrices, the number of zero elements in the matrix is not considered to leak statistical information. <inline-formula id="ieqn-237"><mml:math id="mml-ieqn-237"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
</sec>
<sec id="s5_3">
<label>5.3</label>
<title>Verifiability</title>
<p><bold>Theorem 5:</bold> <italic>A malicious edge server may return incorrect results. In our scheme, the correct results must pass the verification and the incorrect results must not pass the verification</italic>.</p>
<p><bold>Proof of Theorem 5:</bold> According to the convergence property of the multiplicative update rule, <inline-formula id="ieqn-238"><mml:math id="mml-ieqn-238"><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2264;</mml:mo><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mi>t</mml:mi></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mi>t</mml:mi></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> for all <inline-formula id="ieqn-239"><mml:math id="mml-ieqn-239"><mml:mi>t</mml:mi></mml:math></inline-formula>. Therefore, after one additional iteration on <inline-formula id="ieqn-240"><mml:math id="mml-ieqn-240"><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, we obtain <inline-formula id="ieqn-241"><mml:math id="mml-ieqn-241"><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> with <inline-formula id="ieqn-242"><mml:math id="mml-ieqn-242"><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2264;</mml:mo><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. This guarantees:
<disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:mn>0</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mfrac><mml:mrow><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi>D</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>V</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msup><mml:mi>W</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:msup><mml:mi>H</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>&#x03B5;</mml:mi></mml:math></disp-formula></p>
<p>For properly chosen <inline-formula id="ieqn-243"><mml:math id="mml-ieqn-243"><mml:mi>&#x03B5;</mml:mi></mml:math></inline-formula>, honest results satisfy the inequality. <inline-formula id="ieqn-244"><mml:math id="mml-ieqn-244"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
<p><bold>Theorem 6:</bold> <italic>Unless <inline-formula id="ieqn-245"><mml:math id="mml-ieqn-245"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is a near-stationary point of the NMF that is consistent with the multiplicative update dynamics on V<sup>&#x2032;</sup>, the probability of passing verification is negligible</italic>.</p>
<p><bold>Proof of Theorem 6:</bold> In our scheme, a dishonest edge server that skips the <italic>R</italic> iterations does not have access to the intermediate states generated during honest execution. As a result, unless the returned <inline-formula id="ieqn-246"><mml:math id="mml-ieqn-246"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is deliberately constructed to approximate a stationary point of the NMF objective on <italic>V&#x2032;</italic>, the acceptance condition is unlikely to be satisfied. We further observe that constructing a near-stationary solution without following the update trajectory essentially requires solving the NMF problem on the encrypted matrix <italic>V&#x2032;</italic>. This effort is comparable to that of honestly performing the outsourcing computation. Hence, any server that attempts to avoid this computation will fail the verification except with negligible probability. <inline-formula id="ieqn-247"><mml:math id="mml-ieqn-247"><mml:mi>&#x25FB;</mml:mi></mml:math></inline-formula></p>
</sec>
<sec id="s5_4">
<label>5.4</label>
<title>Computational Complexity</title>
<p>The computational complexity analysis is divided into two parts: Client-side computational complexity and server-side computational complexity. We first analyze the client-side computational complexity. The client-side computational complexity mainly arises from the key generation, encryption, result-verification and decryption algorithms. In the key generation algorithm, the complexity mainly comes from generating random permutations <inline-formula id="ieqn-248"><mml:math id="mml-ieqn-248"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-249"><mml:math id="mml-ieqn-249"><mml:msub><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>. This computational complexity is <italic><inline-formula id="ieqn-250"><mml:math id="mml-ieqn-250"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></italic>. In the encryption algorithm, the client performs encryption based on random permutation matrix. This computational complexity is <italic><inline-formula id="ieqn-251"><mml:math id="mml-ieqn-251"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></italic>. Similarly, in the decryption algorithm, the client performs decryption based on random permutation matrix. This computational complexity is <italic><inline-formula id="ieqn-252"><mml:math id="mml-ieqn-252"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></italic>. Verification requires an additional round of iterations by the client with a complexity of <italic><inline-formula id="ieqn-253"><mml:math id="mml-ieqn-253"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></italic>. In summary, the total computational complexity of the client is <inline-formula id="ieqn-254"><mml:math id="mml-ieqn-254"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>.</p>
<p>Next, we analyze the server-side computational complexity. The server-side computational complexity mainly arises from the NMF parallel computation. In each iteration of NMF parallel computation algorithm, matrices <italic>W</italic> and <italic>H</italic> are updated by calculating matrix multiplication. The computational complexity of calculating matrix <italic>W</italic> is <inline-formula id="ieqn-255"><mml:math id="mml-ieqn-255"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. The computational complexity of calculating matrix <italic>H</italic> is <inline-formula id="ieqn-256"><mml:math id="mml-ieqn-256"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. Since we adopt NMF parallel computation, each edge server only needs to undertake part of the computing tasks. By distributing the NMF computation tasks to <inline-formula id="ieqn-257"><mml:math id="mml-ieqn-257"><mml:mi>p</mml:mi></mml:math></inline-formula> edge servers, the parallel computation is realized and the complexity is reduced. Specifically, the computational complexity of each edge server updating its own portion of the matrix is <italic><inline-formula id="ieqn-258"><mml:math id="mml-ieqn-258"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo>&#x2217;</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi>p</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></italic>.</p>
<p>Finally, we compare the time complexity of our proposed scheme with that of representative privacy-preserving NMF outsourcing algorithms in recent years and present the results in <xref ref-type="table" rid="table-1">Table 1</xref>. Here, <inline-formula id="ieqn-259"><mml:math id="mml-ieqn-259"><mml:mi>m</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-260"><mml:math id="mml-ieqn-260"><mml:mi>n</mml:mi></mml:math></inline-formula> denote the dimensions of the original matrix <italic>V</italic>, <inline-formula id="ieqn-261"><mml:math id="mml-ieqn-261"><mml:mi>r</mml:mi></mml:math></inline-formula> represents the dimension parameter, and <italic>R</italic> signifies the number of iterations. It is evident that our scheme effectively improves the efficiency on the edge server side. This means that edge servers can respond to client&#x2019;s needs more quickly.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>Computational complexity comparsion.</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
</colgroup>
<thead>
<tr>
<th align="center" rowspan="2">Computational Complexity</th>
<th align="center" colspan="4">Client</th>
<th>Server</th>
</tr>
<tr>
<th><inline-formula id="ieqn-262"><mml:math id="mml-ieqn-262"><mml:mrow><mml:mi>K</mml:mi><mml:mi>e</mml:mi><mml:mi>y</mml:mi><mml:mi>G</mml:mi><mml:mi>e</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-263"><mml:math id="mml-ieqn-263"><mml:mrow><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:mi>c</mml:mi><mml:mi>r</mml:mi><mml:mi>y</mml:mi><mml:mi>p</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-264"><mml:math id="mml-ieqn-264"><mml:mrow><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:mi>c</mml:mi><mml:mi>r</mml:mi><mml:mi>y</mml:mi><mml:mi>p</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-265"><mml:math id="mml-ieqn-265"><mml:mrow><mml:mi>V</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-266"><mml:math id="mml-ieqn-266"><mml:mrow><mml:mi>C</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>a</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>o</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula></th>
</tr>
</thead>
<tbody>
<tr>
<td>Liu et al. [<xref ref-type="bibr" rid="ref-23">23</xref>]</td>
<td><inline-formula id="ieqn-267"><mml:math id="mml-ieqn-267"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-268"><mml:math id="mml-ieqn-268"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-269"><mml:math id="mml-ieqn-269"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-270"><mml:math id="mml-ieqn-270"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-271"><mml:math id="mml-ieqn-271"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo>&#x2217;</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td>Duan et al. [<xref ref-type="bibr" rid="ref-12">12</xref>]</td>
<td><inline-formula id="ieqn-272"><mml:math id="mml-ieqn-272"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-273"><mml:math id="mml-ieqn-273"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-274"><mml:math id="mml-ieqn-274"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-275"><mml:math id="mml-ieqn-275"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-276"><mml:math id="mml-ieqn-276"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo>&#x2217;</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td>Fu et al. [<xref ref-type="bibr" rid="ref-11">11</xref>]</td>
<td><inline-formula id="ieqn-277"><mml:math id="mml-ieqn-277"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-278"><mml:math id="mml-ieqn-278"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-279"><mml:math id="mml-ieqn-279"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-280"><mml:math id="mml-ieqn-280"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-281"><mml:math id="mml-ieqn-281"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo>&#x2217;</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td>Our scheme</td>
<td><inline-formula id="ieqn-282"><mml:math id="mml-ieqn-282"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-283"><mml:math id="mml-ieqn-283"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-284"><mml:math id="mml-ieqn-284"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-285"><mml:math id="mml-ieqn-285"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-286"><mml:math id="mml-ieqn-286"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo>&#x2217;</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi>p</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5_5">
<label>5.5</label>
<title>Communication Complexity</title>
<p>The computational complexity analysis is divided into two parts: communication between the client and the edge server, communication among edge servers. We first analyze the communication complexity between the client and the edge server. In the encryption phase, the client encrypts the original matrix and partitions the encrypted matrix <italic>V</italic><sup><italic>&#x2032;</italic></sup> by rows and columns. The client sends matrices <inline-formula id="ieqn-287"><mml:math id="mml-ieqn-287"><mml:msubsup><mml:mi>V</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mfrac><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-288"><mml:math id="mml-ieqn-288"><mml:msubsup><mml:mi>V</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:mfrac></mml:mrow></mml:msup></mml:math></inline-formula> to <inline-formula id="ieqn-289"><mml:math id="mml-ieqn-289"><mml:msub><mml:mrow><mml:mi mathvariant="normal">E</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula>. Therefore, the amount of data transmitted from the client to all edge servers is <inline-formula id="ieqn-290"><mml:math id="mml-ieqn-290"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. After completing the parallel NMF computation, edge servers return the final factorization results <inline-formula id="ieqn-291"><mml:math id="mml-ieqn-291"><mml:msub><mml:mi>W</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-292"><mml:math id="mml-ieqn-292"><mml:msub><mml:mi>H</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> to the client. The communication complexity is <inline-formula id="ieqn-293"><mml:math id="mml-ieqn-293"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mi>r</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, which is significantly smaller than <inline-formula id="ieqn-294"><mml:math id="mml-ieqn-294"><mml:mi>O</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> when <inline-formula id="ieqn-295"><mml:math id="mml-ieqn-295"><mml:mi>r</mml:mi><mml:mo>&#x226A;</mml:mo><mml:mo movablelimits="true" form="prefix">min</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>.</p>
<p>Next, we analyze the communication complexity among edge servers in Algorithm 4. In the initialization phase of Algorithm 4, each edge server initializes <inline-formula id="ieqn-296"><mml:math id="mml-ieqn-296"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mn>0</mml:mn></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:mfrac></mml:mrow></mml:msup></mml:math></inline-formula> and computes <inline-formula id="ieqn-297"><mml:math id="mml-ieqn-297"><mml:msub><mml:mi>L</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mn>0</mml:mn></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mn>0</mml:mn></mml:msubsup><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>. The matrices <inline-formula id="ieqn-298"><mml:math id="mml-ieqn-298"><mml:msub><mml:mi>L</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-299"><mml:math id="mml-ieqn-299"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mn>0</mml:mn></mml:msubsup></mml:math></inline-formula> are exchanged among the edge servers. Thus, the communication cost of the initialization phase for edge servers is <inline-formula id="ieqn-300"><mml:math id="mml-ieqn-300"><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>p</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>r</mml:mi><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. In the iterative computation phase, the edge servers alternately update matrices <italic>W</italic> and <italic>H</italic>. When updating matrix <italic>W</italic>, each edge server computes <inline-formula id="ieqn-301"><mml:math id="mml-ieqn-301"><mml:msub><mml:mi>L</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi>t</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi>t</mml:mi></mml:msubsup><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and sends it to other servers. They also sends its local block <inline-formula id="ieqn-302"><mml:math id="mml-ieqn-302"><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mfrac><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>. The communication cost of this step is <inline-formula id="ieqn-303"><mml:math id="mml-ieqn-303"><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>p</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>m</mml:mi><mml:mi>r</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. When updating matrix <italic>H</italic>, each edge server computes <inline-formula id="ieqn-304"><mml:math id="mml-ieqn-304"><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi>t</mml:mi></mml:msubsup><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup><mml:msubsup><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi>t</mml:mi></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and sends it to other servers. They also sends its local block <inline-formula id="ieqn-305"><mml:math id="mml-ieqn-305"><mml:msubsup><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi><mml:mi>t</mml:mi></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:mfrac></mml:mrow></mml:msup></mml:math></inline-formula>. The communication cost of this step is <inline-formula id="ieqn-306"><mml:math id="mml-ieqn-306"><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>p</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>r</mml:mi><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Therefore, the communication complexity of each edge server in one iteration is <inline-formula id="ieqn-307"><mml:math id="mml-ieqn-307"><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn>2</mml:mn><mml:mi>p</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>r</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and the total communication complexity among edge servers over <italic>R</italic> iterations is <inline-formula id="ieqn-308"><mml:math id="mml-ieqn-308"><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>R</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn>2</mml:mn><mml:mi>p</mml:mi><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mi>r</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>m</mml:mi><mml:mo>+</mml:mo><mml:mi>n</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>It should be noted that our computation is &#x201C;embarrassingly parallel&#x201D;. After the initial matrix partitioning, each edge server can independently compute its local matrix blocks <inline-formula id="ieqn-309"><mml:math id="mml-ieqn-309"><mml:msub><mml:mi>W</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-310"><mml:math id="mml-ieqn-310"><mml:msub><mml:mi>H</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub></mml:math></inline-formula> with only periodic synchronization required for aggregating matrices <inline-formula id="ieqn-311"><mml:math id="mml-ieqn-311"><mml:msub><mml:mi>L</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-312"><mml:math id="mml-ieqn-312"><mml:msub><mml:mi>S</mml:mi><mml:mi>&#x03B1;</mml:mi></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>. Besides, since our scheme targets edge computing environments where servers connected via high-speed networks (e.g., 5G), the inter-server communication latency is very low [<xref ref-type="bibr" rid="ref-27">27</xref>,<xref ref-type="bibr" rid="ref-28">28</xref>]. In this discussion, we disregard communication delays, as computation time predominates.</p>
</sec>
</sec>
<sec id="s6">
<label>6</label>
<title>Performance Evaluation</title>
<p>In this section, we conduct the experiment to evaluate the performance of the proposed scheme. We use the Numpy library and Pool library in Python to implement our scheme and test it on a laptop with an Intel Core i5 CPU and 16 GB RAM. The reason for adopting the Pool library is that our computational tasks belong to the &#x201C;embarrassingly parallel&#x201D; category, with low communication requirements between tasks. Therefore, we chose the Pool library over MPI-based multiprocessing.</p>
<p>First, we measure the time to resolve the original NMF task locally on the client, expressed as <inline-formula id="ieqn-313"><mml:math id="mml-ieqn-313"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>original</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>. Next, we measure the time to execute the NMF parallel computation on the edge servers, expressed as <inline-formula id="ieqn-314"><mml:math id="mml-ieqn-314"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>server</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>. We define <inline-formula id="ieqn-315"><mml:math id="mml-ieqn-315"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>server</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> as the execution time of a single edge server. Finally, we measure the time to perform key generation, encryption, result verification, decryption on the client, expressed as <inline-formula id="ieqn-316"><mml:math id="mml-ieqn-316"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>client</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>At the same time, we define <inline-formula id="ieqn-317"><mml:math id="mml-ieqn-317"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>original</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>/<inline-formula id="ieqn-318"><mml:math id="mml-ieqn-318"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>client</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> as the client computing advantage. This value should be as large as possible, representing more computing resources saved by the client. It should be noted that in this experiment, we set the number of iteration rounds <italic>R</italic> to 1000 and the threshold <inline-formula id="ieqn-319"><mml:math id="mml-ieqn-319"><mml:mi>&#x03B5;</mml:mi></mml:math></inline-formula> to <inline-formula id="ieqn-320"><mml:math id="mml-ieqn-320"><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. By conducting experiments with the original matrix <italic>V</italic> across varying dimensions <inline-formula id="ieqn-321"><mml:math id="mml-ieqn-321"><mml:mi>m</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-322"><mml:math id="mml-ieqn-322"><mml:mi>n</mml:mi></mml:math></inline-formula>, we measure the resulting changes in the execution time described above. The results are presented in <xref ref-type="table" rid="table-2">Table 2</xref>. The results presented in <xref ref-type="table" rid="table-2">Table 2</xref> indicates that the execution time of the client is significantly shorter than the original task&#x2019;s duration. The dimension parameter <inline-formula id="ieqn-323"><mml:math id="mml-ieqn-323"><mml:mi>r</mml:mi></mml:math></inline-formula> is set to 40 and the number of servers participating in parallel computation is set to 4.</p>
<table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>Comparison of execution time (in Seconds).</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
</colgroup>
<thead>
<tr>
<th><inline-formula id="ieqn-324"><mml:math id="mml-ieqn-324"><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-325"><mml:math id="mml-ieqn-325"><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-326"><mml:math id="mml-ieqn-326"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-327"><mml:math id="mml-ieqn-327"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>c</mml:mi><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-328"><mml:math id="mml-ieqn-328"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mi>g</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-329"><mml:math id="mml-ieqn-329"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>c</mml:mi><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></th>
</tr>
</thead>
<tbody>
<tr>
<td>3000</td>
<td>2400</td>
<td>128.9449</td>
<td>2.7155</td>
<td>62.0353</td>
<td>47.4848</td>
</tr>
<tr>
<td>6000</td>
<td>4800</td>
<td>445.5048</td>
<td>10.2086</td>
<td>121.8091</td>
<td>43.6337</td>
</tr>
<tr>
<td>10000</td>
<td>8000</td>
<td>1544.7122</td>
<td>44.4903</td>
<td>278.7890</td>
<td>34.7204</td>
</tr>
<tr>
<td>20,000</td>
<td>16,000</td>
<td>4345.4866</td>
<td>134.6020</td>
<td>1802.0270</td>
<td>32.2839</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The time overhead is significantly influenced by the size of the original input matrix. We keep the row value <inline-formula id="ieqn-330"><mml:math id="mml-ieqn-330"><mml:mi>m</mml:mi></mml:math></inline-formula> of the original matrix fixed at 3000 and vary the range of column values <inline-formula id="ieqn-331"><mml:math id="mml-ieqn-331"><mml:mi>n</mml:mi></mml:math></inline-formula> from 500 to 3000. As depicted in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>, it can be observed that both the edge servers and the client experience an increase in computing time, with a greater impact on the edge servers. Subsequently, we calculate how the client computing advantage changes with variations in column size, and the results are shown in <xref ref-type="fig" rid="fig-4">Fig. 4</xref>. The results show that with the increase of column value, the client computing advantage has an increasing trend.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>The time cost varying with column size n when m &#x003D; 3000.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-3.tif"/>
</fig><fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>Client computing advantage varying with n when m &#x003D; 3000.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-4.tif"/>
</fig>
<p>Meanwhile, we keep the column value <inline-formula id="ieqn-332"><mml:math id="mml-ieqn-332"><mml:mi>n</mml:mi></mml:math></inline-formula> of the original matrix fixed at 3000 and vary the range of row values <inline-formula id="ieqn-333"><mml:math id="mml-ieqn-333"><mml:mi>m</mml:mi></mml:math></inline-formula>. As depicted in <xref ref-type="fig" rid="fig-5">Fig. 5</xref>, it is evident that both the edge servers and the client experience an increase in computing time, with a greater impact on the edge servers. Subsequently, we calculate how the client computing advantage changes with variations in row size, and the results are shown in <xref ref-type="fig" rid="fig-6">Fig. 6</xref>. The results show that with the increase of row value, the client computing advantage has an increasing trend.</p>
<fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>The time cost varying with row size m when n &#x003D; 3000.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-5.tif"/>
</fig><fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>Client computing advantage varying with m when n &#x003D; 3000.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-6.tif"/>
</fig>
<p>In NMF tasks, the dimension parameter <inline-formula id="ieqn-334"><mml:math id="mml-ieqn-334"><mml:mi>r</mml:mi></mml:math></inline-formula> plays a crucial role. To evaluate its impact on performance, we vary the value of <inline-formula id="ieqn-335"><mml:math id="mml-ieqn-335"><mml:mi>r</mml:mi></mml:math></inline-formula> while keeping the size of <italic>V</italic> constant. Specifically, we set <inline-formula id="ieqn-336"><mml:math id="mml-ieqn-336"><mml:mi>m</mml:mi></mml:math></inline-formula> &#x003D; 3000 and <inline-formula id="ieqn-337"><mml:math id="mml-ieqn-337"><mml:mi>n</mml:mi></mml:math></inline-formula> &#x003D; 2400, and define the range of <inline-formula id="ieqn-338"><mml:math id="mml-ieqn-338"><mml:mi>r</mml:mi></mml:math></inline-formula> as 20 to 200. We record the computing time for both client and the edge servers, as depicted in <xref ref-type="fig" rid="fig-7">Fig. 7</xref>. It is evident that an increase in <inline-formula id="ieqn-339"><mml:math id="mml-ieqn-339"><mml:mi>r</mml:mi></mml:math></inline-formula> leads to longer computing time for both client and edge servers. Building upon this observation, we calculate the client computing advantage. The results are shown in <xref ref-type="fig" rid="fig-8">Fig. 8</xref>, which demonstrate a positive correlation between the client computing advantage and the values of <inline-formula id="ieqn-340"><mml:math id="mml-ieqn-340"><mml:mi>r</mml:mi></mml:math></inline-formula>.</p>
<fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>The time cost varying with dimension parameter.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-7.tif"/>
</fig><fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>Client computing advantage varying with dimension parameter.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-8.tif"/>
</fig>
<p>At the same time, we test the trend of average computation time per server as the number of edge servers involved in the computation increased. The results are shown in <xref ref-type="fig" rid="fig-9">Fig. 9</xref>. The row size <inline-formula id="ieqn-341"><mml:math id="mml-ieqn-341"><mml:mi>m</mml:mi></mml:math></inline-formula> of matrix <italic>V</italic> is set as 20,000, the column size <inline-formula id="ieqn-342"><mml:math id="mml-ieqn-342"><mml:mi>n</mml:mi></mml:math></inline-formula> is set as 16,000 and the dimension parameter <inline-formula id="ieqn-343"><mml:math id="mml-ieqn-343"><mml:mi>r</mml:mi></mml:math></inline-formula> is set as 40. As can be seen, the computation time per server decreases significantly as the number of invested servers increases.</p>
<fig id="fig-9">
<label>Figure 9</label>
<caption>
<title>Relationship between the number of servers and the time cost of each server.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-9.tif"/>
</fig>
<p>Additionally, we report the convergence trajectory of <inline-formula id="ieqn-344"><mml:math id="mml-ieqn-344"><mml:mrow><mml:mi mathvariant="normal">N</mml:mi><mml:mi mathvariant="normal">o</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>V</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mi>W</mml:mi><mml:mi>H</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, where <italic>V</italic> is the original matrix and <italic>WH</italic> is the reconstructed result at each iteration round. The results are shown in <xref ref-type="fig" rid="fig-10">Fig. 10</xref>. The reconstruction norm consistently decreases as the iteration round increases and becomes nearly stable after sufficient iterations, indicating a steady convergence behavior of our iterative optimization.</p>
<fig id="fig-10">
<label>Figure 10</label>
<caption>
<title>Eulerian norm value of (V &#x2212; WH) comparison.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_76731-fig-10.tif"/>
</fig>
</sec>
<sec id="s7">
<label>7</label>
<title>Conclusion</title>
<p>In this paper, we propose a privacy-preserving parallel non-negative matrix factorization outsourcing scheme with edge computing. The scheme divides the computational task into multiple sub-tasks using matrix block techniques and designs a parallel NMF computation scheme based on the multiplicative update rule, thereby improving the computational efficiency of edge servers. This means that client&#x2019;s needs can be quickly satisfied. Additionally, we employ random permutation matrices to protect data privacy and leverage the iterative nature of NMF for result verification. The experimental results and theoretical analysis demonstrate the superiority of the proposed scheme in terms of both computational efficiency and privacy protection.</p>
</sec>
</body>
<back>
<ack>
<p>Not applicable.</p>
</ack>
<sec>
<title>Funding Statement</title>
<p>This research was supported in part by Shandong Provincial Natural Science Foundation under Grant (ZR2024MF038), and Qingdao Natural Science Foundation (25-1-1-103-zyyd-jchZ).</p>
</sec>
<sec>
<title>Author Contributions</title>
<p>The authors confirm contribution to the paper as follows: Conceptualization, Wenxuan Yu and Wenjing Gao; methodology, Jiuru Wang, Jia Yu; validation, Wenxuan Yu, Jia Yu and Rong Hao; formal analysis, Wenjing Gao; data curation, Wenxuan Yu; review and editing, Wenjing Gao and Jia Yu; supervision, Rong Hao and Jia Yu. All authors reviewed and approved the final version of the manuscript.</p>
</sec>
<sec sec-type="data-availability">
<title>Availability of Data and Materials</title>
<p>Not applicable.</p>
</sec>
<sec>
<title>Ethics Approval</title>
<p>Not applicable.</p>
</sec>
<sec sec-type="COI-statement">
<title>Conflicts of Interest</title>
<p>The authors declare no conflicts of interest.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name><surname>Langville</surname> <given-names>AN</given-names></string-name>, <string-name><surname>Meyer</surname> <given-names>CD</given-names></string-name>, <string-name><surname>Albright</surname> <given-names>R</given-names></string-name>, <string-name><surname>Cox</surname> <given-names>J</given-names></string-name>, <string-name><surname>Duling</surname> <given-names>D</given-names></string-name></person-group>. <article-title>Algorithms, initializations, and convergence for the nonnegative matrix factorization</article-title>. <comment>arXiv:1407.7299. 2014</comment>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Xu</surname> <given-names>W</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>X</given-names></string-name>, <string-name><surname>Gong</surname> <given-names>Y</given-names></string-name></person-group>. <article-title>Document clustering based on non-negative matrix factorization</article-title>. In: <conf-name>Proceedings of the 26th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval</conf-name>. <publisher-loc>New York, NY, USA</publisher-loc>: <publisher-name>ACM</publisher-name>; <year>2003</year>. p. <fpage>267</fpage>&#x2013;<lpage>73</lpage>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>H</given-names></string-name>, <string-name><surname>Wu</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Li</surname> <given-names>X</given-names></string-name>, <string-name><surname>Cai</surname> <given-names>D</given-names></string-name>, <string-name><surname>Huang</surname> <given-names>TS</given-names></string-name></person-group>. <article-title>Constrained nonnegative matrix factorization for image representation</article-title>. <source>IEEE Trans Pattern Anal Mach Intell</source>. <year>2012</year>;<volume>34</volume>(<issue>7</issue>):<fpage>1299</fpage>&#x2013;<lpage>311</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tpami.2011.217</pub-id>; <pub-id pub-id-type="pmid">22064797</pub-id></mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Yang</surname> <given-names>CF</given-names></string-name>, <string-name><surname>Ye</surname> <given-names>M</given-names></string-name>, <string-name><surname>Zhao</surname> <given-names>J</given-names></string-name></person-group>. <chapter-title>Document clustering based on nonnegative sparse matrix factorization</chapter-title>. In: <source>Advances in Natural Computation (ICNC 2005)</source>. Vol. <volume>3611</volume>. <publisher-loc>Berlin/Heidelberg, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>; <year>2005</year>. p. <fpage>557</fpage>&#x2013;<lpage>63</lpage>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Shahnaz</surname> <given-names>F</given-names></string-name>, <string-name><surname>Berry</surname> <given-names>MW</given-names></string-name>, <string-name><surname>Pauca</surname> <given-names>VP</given-names></string-name>, <string-name><surname>Plemmons</surname> <given-names>RJ</given-names></string-name></person-group>. <article-title>Document clustering using nonnegative matrix factorization</article-title>. <source>Inf Process Manag</source>. <year>2006</year>;<volume>42</volume>(<issue>2</issue>):<fpage>373</fpage>&#x2013;<lpage>86</lpage> doi:<pub-id pub-id-type="doi">10.1016/j.ipm.2004.11.005</pub-id>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Guo</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Li</surname> <given-names>Q</given-names></string-name>, <string-name><surname>Liang</surname> <given-names>C</given-names></string-name></person-group>. <article-title>The rise of nonnegative matrix factorization: algorithms and applications</article-title>. <source>Inf Syst</source>. <year>2024</year>;<volume>123</volume>:<fpage>102379</fpage>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname> <given-names>H</given-names></string-name>, <string-name><surname>He</surname> <given-names>D</given-names></string-name>, <string-name><surname>Fu</surname> <given-names>A</given-names></string-name>, <string-name><surname>Li</surname> <given-names>Q</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>Q</given-names></string-name></person-group>. <article-title>Provable data possession with outsourced data transfer</article-title>. <source>IEEE Trans Serv Comput</source>. <year>2021</year>;<volume>14</volume>(<issue>6</issue>):<fpage>1929</fpage>&#x2013;<lpage>39</lpage> doi:<pub-id pub-id-type="doi">10.1109/tsc.2019.2892095</pub-id>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Shan</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Ren</surname> <given-names>K</given-names></string-name>, <string-name><surname>Blanton</surname> <given-names>M</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>C</given-names></string-name></person-group>. <article-title>Practical secure computation outsourcing: a survey</article-title>. <source>ACM Comput Surv</source>. <year>2018</year>;<volume>51</volume>(<issue>2</issue>):<fpage>31:1</fpage>&#x2013;<lpage>31:40</lpage>. doi:<pub-id pub-id-type="doi">10.1145/3158363</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhang</surname> <given-names>H</given-names></string-name>, <string-name><surname>Gao</surname> <given-names>P</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Lin</surname> <given-names>J</given-names></string-name>, <string-name><surname>Xiong</surname> <given-names>NN</given-names></string-name></person-group>. <article-title>Machine learning on cloud with blockchain: a secure, verifiable and fair approach to outsource the linear regression</article-title>. <source>IEEE Trans Netw Sci Eng</source>. <year>2022</year>;<volume>9</volume>(<issue>6</issue>):<fpage>3956</fpage>&#x2013;<lpage>67</lpage>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>W</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>M</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Enabling privacy-preserving parallel outsourcing matrix inversion in IoT</article-title>. <source>IEEE Internet Things J</source>. <year>2022</year>;<volume>9</volume>(<issue>17</issue>):<fpage>15915</fpage>&#x2013;<lpage>27</lpage> doi:<pub-id pub-id-type="doi">10.1109/jiot.2022.3150956</pub-id>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Fu</surname> <given-names>A</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Mu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Susilo</surname> <given-names>W</given-names></string-name>, <string-name><surname>Sun</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Wu</surname> <given-names>J</given-names></string-name></person-group>. <article-title>Cloud-based outsourcing for enabling privacy-preserving large-scale non-negative matrix factorization</article-title>. <source>IEEE Trans Serv Comput</source>. <year>2022</year>;<volume>15</volume>(<issue>1</issue>):<fpage>266</fpage>&#x2013;<lpage>78</lpage> doi:<pub-id pub-id-type="doi">10.1109/tsc.2019.2937484</pub-id>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Duan</surname> <given-names>J</given-names></string-name>, <string-name><surname>Zhou</surname> <given-names>J</given-names></string-name>, <string-name><surname>Li</surname> <given-names>Y</given-names></string-name></person-group>. <article-title>Secure and verifiable outsourcing of large-scale nonnegative matrix factorization (NMF)</article-title>. <source>IEEE Trans Serv Comput</source>. <year>2021</year>;<volume>14</volume>(<issue>6</issue>):<fpage>1940</fpage>&#x2013;<lpage>53</lpage> doi:<pub-id pub-id-type="doi">10.1109/tsc.2019.2911282</pub-id>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lei</surname> <given-names>X</given-names></string-name>, <string-name><surname>Liao</surname> <given-names>X</given-names></string-name>, <string-name><surname>Huang</surname> <given-names>T</given-names></string-name>, <string-name><surname>Li</surname> <given-names>H</given-names></string-name>, <string-name><surname>Hu</surname> <given-names>C</given-names></string-name></person-group>. <article-title>Outsourcing large matrix inversion computation to a public cloud</article-title>. <source>IEEE Trans Cloud Comput</source>. <year>2013</year>;<volume>1</volume>(<issue>1</issue>):<fpage>78</fpage>&#x2013;<lpage>87</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tcc.2013.7</pub-id>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lei</surname> <given-names>X</given-names></string-name>, <string-name><surname>Liao</surname> <given-names>X</given-names></string-name>, <string-name><surname>Huang</surname> <given-names>T</given-names></string-name>, <string-name><surname>Heriniaina</surname> <given-names>F</given-names></string-name></person-group>. <article-title>Achieving security, robust cheating resistance, and high-efficiency for outsourcing large matrix multiplication computation to a malicious cloud</article-title>. <source>Inf Sci</source>. <year>2014</year>;<volume>280</volume>:<fpage>205</fpage>&#x2013;<lpage>17</lpage> doi:<pub-id pub-id-type="doi">10.1016/j.ins.2014.05.014</pub-id>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Fu</surname> <given-names>S</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Xu</surname> <given-names>M</given-names></string-name></person-group>. <article-title>A secure algorithm for outsourcing matrix multiplication computation in the cloud</article-title>. In: <conf-name>Proceedings of the Fifth ACM International Workshop on Security in Cloud Computing</conf-name>. <publisher-loc>New York, NY, USA</publisher-loc>: <publisher-name>ACM</publisher-name>; <year>2017</year>. p. <fpage>27</fpage>&#x2013;<lpage>33</lpage>.</mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lei</surname> <given-names>X</given-names></string-name>, <string-name><surname>Liao</surname> <given-names>X</given-names></string-name>, <string-name><surname>Huang</surname> <given-names>T</given-names></string-name>, <string-name><surname>Li</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Cloud computing service: the case of large matrix determinant computation</article-title>. <source>IEEE Trans Serv Comput</source>. <year>2015</year>;<volume>8</volume>(<issue>5</issue>):<fpage>688</fpage>&#x2013;<lpage>700</lpage>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Bi</surname> <given-names>J</given-names></string-name>, <string-name><surname>Li</surname> <given-names>M</given-names></string-name></person-group>. <article-title>Secure outsourcing of large matrix determinant computation</article-title>. <source>Frontiers Comput Sci</source>. <year>2020</year>;<volume>14</volume>(<issue>1</issue>):<fpage>146807</fpage> doi:<pub-id pub-id-type="doi">10.1007/s11704-019-9189-7</pub-id>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhou</surname> <given-names>L</given-names></string-name>, <string-name><surname>Li</surname> <given-names>C</given-names></string-name></person-group>. <article-title>Outsourcing eigen-decomposition and singular value decomposition of large matrix to a public cloud</article-title>. <source>IEEE Access</source>. <year>2016</year>;<volume>4</volume>:<fpage>869</fpage>&#x2013;<lpage>79</lpage> doi:<pub-id pub-id-type="doi">10.1109/access.2016.2535103</pub-id>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Luo</surname> <given-names>C</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>K</given-names></string-name>, <string-name><surname>Salinas</surname> <given-names>S</given-names></string-name>, <string-name><surname>Li</surname> <given-names>P</given-names></string-name></person-group>. <article-title>SecFact: secure large-scale QR and LU factorizations</article-title>. <source>IEEE Trans Big Data</source>. <year>2021</year>;<volume>7</volume>(<issue>4</issue>):<fpage>796</fpage>&#x2013;<lpage>807</lpage>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>H</given-names></string-name>, <string-name><surname>Lin</surname> <given-names>J</given-names></string-name>, <string-name><surname>Liang</surname> <given-names>F</given-names></string-name>, <string-name><surname>Xu</surname> <given-names>H</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>X</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Secure edge-aided singular value decomposition in internet of things</article-title>. <source>IEEE Internet Things J</source>. <year>2024</year>;<volume>11</volume>(<issue>13</issue>):<fpage>23207</fpage>&#x2013;<lpage>21</lpage> doi:<pub-id pub-id-type="doi">10.1109/jiot.2024.3375394</pub-id>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>C</given-names></string-name>, <string-name><surname>Hu</surname> <given-names>X</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>X</given-names></string-name>, <string-name><surname>Wei</surname> <given-names>J</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>W</given-names></string-name></person-group>. <article-title>SDIM: a subtly designed invertible matrix for enhanced privacy-preserving outsourcing matrix multiplication and related tasks</article-title>. <source>IEEE Trans Dependable Secur Comput</source>. <year>2024</year>;<volume>21</volume>(<issue>4</issue>):<fpage>3469</fpage>&#x2013;<lpage>86</lpage>.</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Su</surname> <given-names>Q</given-names></string-name></person-group>. <article-title>Enabling verifiable and traceable distributed outsourced matrix multiplication in neural networks</article-title>. <source>Cluster Comput</source>. <year>2025</year>;<volume>28</volume>(<issue>11</issue>):<fpage>722</fpage> doi:<pub-id pub-id-type="doi">10.1007/s10586-025-05472-0</pub-id>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Li</surname> <given-names>B</given-names></string-name>, <string-name><surname>Han</surname> <given-names>Q</given-names></string-name></person-group>. <article-title>Secure and verifiable outsourcing protocol for non-negative matrix factorisation</article-title>. <source>Int J High Perform Comput Netw</source>. <year>2018</year>;<volume>11</volume>(<issue>1</issue>):<fpage>14</fpage>&#x2013;<lpage>23</lpage> doi:<pub-id pub-id-type="doi">10.1504/ijhpcn.2018.088875</pub-id>; <pub-id pub-id-type="pmid">35009967</pub-id></mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Saha</surname> <given-names>S</given-names></string-name>, <string-name><surname>Imtiaz</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Privacy-preserving non-negative matrix factorization with outliers</article-title>. <source>ACM Trans Knowl Discov Data</source>. <year>2024</year>;<volume>18</volume>(<issue>3</issue>):<fpage>1</fpage>&#x2013;<lpage>26</lpage>. doi:<pub-id pub-id-type="doi">10.1145/3632961</pub-id>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Tian</surname> <given-names>C</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>H</given-names></string-name>, <string-name><surname>Xue</surname> <given-names>H</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>C</given-names></string-name>, <string-name><surname>Ren</surname> <given-names>K</given-names></string-name></person-group>. <article-title>Novel secure outsourcing of modular inversion for arbitrary and variable modulus</article-title>. <source>IEEE Trans Serv Comput</source>. <year>2022</year>;<volume>15</volume>(<issue>1</issue>):<fpage>241</fpage>&#x2013;<lpage>53</lpage> doi:<pub-id pub-id-type="doi">10.1109/tsc.2019.2937486</pub-id>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Lee</surname> <given-names>DD</given-names></string-name>, <string-name><surname>Seung</surname> <given-names>HS</given-names></string-name></person-group>. <chapter-title>Algorithms for non-negative matrix factorization</chapter-title>. In: <source>Advances in Neural Information Processing Systems</source>. Vol. <volume>13</volume>. <publisher-loc>Cambridge, MA, USA</publisher-loc>: <publisher-name>MIT Press</publisher-name>; <year>2000</year>. p. <fpage>556</fpage>&#x2013;<lpage>62</lpage>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Guo</surname> <given-names>L</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>M</given-names></string-name>, <string-name><surname>Kong</surname> <given-names>F</given-names></string-name></person-group>. <article-title>Privacy-preserving convolution neural network inference with edge-assistance</article-title>. <source>Comput Secur</source>. <year>2022</year>;<volume>123</volume>:<fpage>102910</fpage> doi:<pub-id pub-id-type="doi">10.1016/j.cose.2022.102910</pub-id>.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Shen</surname> <given-names>W</given-names></string-name>, <string-name><surname>Yin</surname> <given-names>B</given-names></string-name>, <string-name><surname>Cao</surname> <given-names>X</given-names></string-name>, <string-name><surname>Cheng</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Shen</surname> <given-names>XS</given-names></string-name></person-group>. <article-title>A distributed secure outsourcing scheme for solving linear algebraic equations in Ad Hoc clouds</article-title>. <source>IEEE Trans Cloud Comput</source>. <year>2019</year>;<volume>7</volume>(<issue>2</issue>):<fpage>16</fpage> doi:<pub-id pub-id-type="doi">10.1109/tcc.2016.2647718</pub-id>.</mixed-citation></ref>
</ref-list>
</back></article>